这篇文章主要介绍操作Bash历史记录的快捷方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1,最后一个参数:<代码> ! $ 代码>
如果你仅想从本文中学习一种快捷方式,那就是这个。它会将最后一个命令的最后一个参数替换到你的命令行中。
看看这种情况:
<>之前,美元mv /路径//wrongfile //其他/placemv:, cannot stat & # 39;/路径//wrongfile& # 39;:, No such file 或是目录啊哈,我在命令中写了错误的文件名“wrongfile”,我应该用正确的文件名“rightfile”代替。
你可以重新键入上一个命令,并用“rightfile”完全替换“wrongfile”。但是,你也可以键入:
<>之前,美元mv /道路//rightfile ! mv 美元/路径//rightfile /一些/其他/这个命令也可以奏效。
在Bash中还有其他方法可以通过快捷方式实现相同的目的,但是重用上一个命令的最后一个参数的这种技巧是我最常使用的。
2,第n个参数:<代码> ! 2 代码>
是不是干过像这样的事情:
<>之前,美元tar -cvf afolder afolder.tartar:, failed 用打开像许多其他人一样,我也经常搞错<代码>沥青> 代码(和<代码> ln> 代码)的参数顺序。
xkcd漫画
当你搞混了参数,你可以这样:
<>之前,美元!:0,1,!:3,!:2 tar -cvf afolder.tar afolder这样就不会出丑了。
上一个命令的各个参数的索引是从零开始的,并且可以用<代码> !:> 代码之后跟上该索引数字代表各个参数。
显然,你也可以使用它来重用上一个命令中的特定参数,而不是所有参数。
3,全部参数:<代码> !:1 - $ 代码>
假设我运行了类似这样的命令:
<>之前,美元grep & # 39; (ping | pong) & # 39;, afile参数是正确的。然而,我想在文件中匹配“ping”或“乒乓球”,但我使用的是<代码> grep> 代码而不是<代码> egrep> 代码。
我开始输入<代码> egrep> 代码,但是我不想重新输入其他参数,因此,我可以使用<代码> !:1 - $> 代码快捷方式来调取上一个命令的所有参数,从第二个(记住它们的索引从零开始,因此是<代码> 1> 代码)到最后一个(由<代码> 代码>美元表示)。
<>之前,美元egrep !: 1 - egrep 美元;& # 39;(ping | pong) & # 39;, afileping你不用必须用<代码> 1 - $ 代码>选择全部参数,你也可以选择一个子集,例如<代码> 1 - 2 代码>或<代码> 3 - 9> 代码(如果上一个命令中有那么多参数的话)。
4,倒数第n行的最后一个参数:<代码> !代码2:$ >
当我输错之后马上就知道该如何更正我的命令时,上面的快捷键非常有用,但是我经常在原来的命令之后运行别的命令,这意味着上一个命令不再是我所要引用的命令。
例如,还是用之前的<代码> mv> 代码例子,如果我通过<代码> ls> 代码检查文件夹的内容来纠正我的错误:
<>之前,美元mv /路径//wrongfile //其他/placemv:, cannot stat & # 39;/路径//wrongfile& # 39;:, No such file 或是目录,美元ls /路径//rightfile我就不能再使用<代码> !$ 代码>快捷方式了。
在这些情况下,我可以在<代码> !代码>之后插入<代码> n> 代码:(其中<代码> n> 代码是要在历史记录中回溯的命令条数),以从较旧的命令取得最后的参数:
<>之前,美元mv /道路//rightfile ! 2: mv 美元/路径//rightfile /一些/其他/同样,一旦你学会了它,你可能会惊讶于你需要使用它的频率。
5,进入文件夹:<代码> !美元:h 代码>
从表面上看,这个看起来不太有用,但我每天要用它几十次。
想象一下,我运行的命令如下所示:
<>之前,美元tar -cvf system.tar /etc/system 沥青:,/etc/系统:,Cannot 统计:,No such file 或是directory 沥青:,Error exit delayed 得到previous 错误。我可能要做的第一件事是转到<代码>/etc/<代码>文件夹,查看其中的内容并找出我做错了什么。
我可以通过以下方法来做到这一点:
<>之前,美元cd !美元:hcd /etc这是说:“获取上一个命令的最后一个参数(<代码>/etc/系统>