很多时候我在同一个文件上发出不同的命令。例如:
$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv
Run Code Online (Sandbox Code Playgroud)
有没有办法重用当前命令中的参数,这样我就不必重写它?
Cas*_*bel 16
alt-.当然很好,但如果你碰巧已经知道你想要哪个编号的参数,你可以更快:!:n是n上一个命令的第 th 个参数。
将其与魔法空间结合起来通常很有帮助。要启用它,请输入您的 .inputrc Space: magic-space。启用后,当您在 之后键入空格时!:2,它将立即扩展为其值,而不是等待您按回车键。避免您意外抓住错误的论点。
在 bash 中,“上一个命令行上的最后一个单词”的指示符是!!$:
$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world
Run Code Online (Sandbox Code Playgroud)
您还可以使用“插入符语法”来替换命令行的开头部分;如果您想在同一个文件上执行多个命令,这会很方便:
file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`
Run Code Online (Sandbox Code Playgroud)
还有更多的可能性;有关详细信息,请参阅bash(1) 手册页中的“历史替换” 。