审校 | 重楼
在Linux命令行上重复运行命令并不难,但是有很多方法可以做到这一点。本文给出了八个如何在Linux上重复运行命令的例子,有的更改,有的没有更改。
1. 重复以前的命令
通过键入!!来重新运行以前输入的命令是重复该命令的最简单方法。如果你想再次运行相同的命令,不必输入任何其他内容。这里有几个例子:
$ pwd
/home/myacct
$ !!
/home/myacct
$ ls -l | wc -l
218
$ !!
ls -l | wc -l
218
2. 重复以前的命令,稍做更改
如果你想重新运行以前的命令,但稍做更改,可以通过在^字符之间提供命令的原始部分和替换部分来指定要进行的更改,如下例所示:
$ echo this is a test
this is a test
$ ^test^trial^
echo this is a trial
this is a trial
3. 使用命令历史记录
要从命令历史记录重新运行以前的命令,使用history命令(它通常保留你最近运行的1000个命令),以列出历史记录,然后键入!后面跟一与该命令相关联的数字。这里有一个例子:
$ history | tail -2
1001 show_exit_codes
1002 ls -l | wc -l
$ !1002
ls -l | wc -l
218
还可以通过回过头来在命令历史记录中找到以前的命令来重新运行它:按向上箭头键,当你找到想要重新运行的命令时,只需按返回键即可重新运行它。
4. 修改并重新运行命令
使用向上箭头键回过头来找到以前的命令后,可以在再次运行之前对其进行更改。你可以使用退格键回找,然后输入命令的替换部分。
可以使用^a移动到命令的开头,也可以使用^e移动到命令的末尾。在下例中,我忘记使用echo命令,然后使用^a回到命令的开头,并插入命令。
$ Have a happy and very profitable day!
bash: Have: command not found...
$ echo Have a happy and very profitable day!
你也可以使用左右方向键来左右移动。用向上箭头键移回到命令,并根据需要向左和向右移动。完成更改后,按回车键运行刚刚修改的命令。
^a将光标移动到命令的开头,^e则将光标移动到命令的末尾。
5. 只使用前一个命令中的最后一个字符串
如果你希望重用前一个命令中的最后一个参数,可以在下一个命令中将其引用为!$。下面是一个例子:
$ echo this is not a test
this is not a test
$ echo !$
echo test
test
6. 使用反向搜索来查找以前运行过的命令
要在命令历史记录中查找想要重新运行的命令,可以按住Ctrl键并按r。然后,系统会提示你输入搜索文本,将运行含有该字符串的最新命令。字符串可以包含多个单词。你在输入时,原始命令的文本会出现在右侧。
(reverse-i-search)`happy': echo Have a happy and very profitable day!
(reverse-i-search)`very profitable': alias byebye='echo "Have a happy and very profitable day!"'
7. 将复杂的命令转换为别名
当你运行可能经常使用的命令时,可以考虑将其转换为别名。你可以使用如下所示的命令创建别名,但这只能使别名在你注销之前保持有效状态。将其添加到.bashrc文件中,使其在每次登录时都可用。下面是一些例子:
alias myprocs="ps -ef | grep `whoami`"
alias c="clear"
alias big5="du -h | sort -h | tail -5"
alias recent="history | tail -10"
别名不仅可以节省时间,还可以避免输入错误。
8. 评估命令历史存储
要确定历史缓冲区会保留多少命令,请运行下面所示的命令:
$ echo $HISTSIZE
1000
你可以通过在.bashrc文件中添加这样的命令来改变这一点。默认值保存在/etc/profile文件中。
HISTSIZE = 1234
结语
重用历史记录中的命令可以节省大量时间,特别是在运行复杂、有些重复的命令时。
原文8 easy ways to reuse commands on Linux,作者:Sandra Henry-Stocker