And don't forget the fantastic history expansion shortcuts in bash. 1
I'm posting some excerpts from the manpage, in case you haven't tattooed them on your arm (or memorized them).
Event Designators
An event designator is a reference to a command line entry in the his‐
tory 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 trail‐
ing ? may be omitted if string is followed immediately by a new‐
line.
^string1^string2^
Quick substitution. Repeat the last command, replacing string1
with string2. Equivalent to ``!!:s/string1/string2/'' (see Mod‐
ifiers below).
!# The entire command line typed so far.
I frequently use the ability to refer to the last 'word' of the previous command.
E.g.,
mkdir /foo/shmoo/adir.horribilus.foo
cp file1 file2 file3 file4 !$
ls -l !$
In both cases here, the !$ matches /foo/shmoo/adir.horribilus.foo .
1... which were taken from csh. To mitigate the scope of bash's feature theft, the bash man page says
The shell supports a history expansion feature that is similar to the
history expansion in csh.
So, it's "similar". Any of this might break in csh or tcsh. Or whichever csh descendent you are not using due to the fact that it isn't as wonderful as bash .
$include /etc/inputrc, preferably on the first line. – Tulio Casagrande Sep 05 '18 at 17:34