11.4 使用字符串再次运行以前运行过的命令
![string]
能够通过引用命令的历史编号来再次运行它,当然不错。但这需要事先知道命令在history
中的编号,而查找这个编号多少有点麻烦(虽然把history
的输出通过管道传递给grep
命令可能会有帮助,但仍然不是最好的办法)。为了引用以前输入的命令,通常更好的办法是按照命令的实际名称来引用。如果在感叹号后面输入某个命令的前几位字母,shell将运行它能够在.bash_history
文件中找到的与之匹配的第一个命令。
$ cat /home/scott/todo
Buy milk
Buy dog food
Renew Linux Magazine subscription
$ cd /home/scott/pictures
$ !cat
cat /home/scott/todo
Buy milk
Buy dog food
Renew Linux Magazine subscription
如果在命令历史中找到3个cat
命令的运行记录,即35(cat /home/scott/todo
)、412(cat /etc/apt/sources.list
)和496(cat /home/scott/todo
),而此时输入!cat
,就会运行编号为496的那条命令。如果要运行编号为412的命令,要么直接运行!412
,要么在感叹号后面提供足够多的信息,让命令可以判断出要引用的是编号为412的命令。
$ !cat /etc
cat /etc/apt/sources.list
deb http://us.archive.ubuntu.com/ubuntu breezy main restricted
deb-src http://us.archive.ubuntu.com/ubuntu breezy
➥main restricted
因为人类记忆单词要比记忆数字容易得多,所以最终可能还是采用通过字符串的方法来调用以前运行过的命令。如果觉得不确定,可以运行history
命令看一看。