Using up arrow to run previous command
Make sure you are actually using bash. A common gotcha is creating a new user with useradd
instead of adduser
or the Users and groups (GUI) application. With the former, the default shell set is /bin/sh
. Run
chsh
(change shell) to make sure it's set to /bin/bash
.
Make sure that your history is enabled. You can check the current status by running:
set -o
The output should contain (note the history on
line):
histexpand on
history on
ignoreeof off
If this is not enabled, you need to run set -o history
. To make this change persistent, you need to append it to ~/.bashrc
:
set -o history
If you want to run the previous command, you can run the next command as well:
!!
From Bash manual page:
Event Designators
An event designator is a reference to a command line entry in the history list.
! Start a history substitution, except when followed by a blank, newline,
carriage return, = or ( (when the extglob shell option is
enabled using the shopt builtin).
!n Refer to command line n.
!-n Refer to the current command line minus n.
!! Refer to the previous command. This is a synonym for `!-1'.
!string
Refer to the most recent command starting with string.
!?string[?]
Refer to the most recent command containing string. The trailing ?
may be omitted if string is followed immediately by a newline.
^string1^string2^
Quick substitution. Repeat the last command, replacing string1 with
string2. Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
!# The entire command line typed so far.
If you're using Bash, you can use the default shortcuts for navigating through the history as well:
- Ctrl + P: Previous command
-
Ctrl + N: Next command
Commands for Manipulating the History previous-history (C-p) Fetch the previous command from the history list, moving back in the list. next-history (C-n) Fetch the next command from the history list, moving forward in the list.
In terminal enter:
gedit ~/.inputrc
Then copy paste and save:
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
From now on in terminal you can do incremental search, All you need to do to find a previous command is to enter say the first two or three letters and upward arrow will take you there quickly.