我经常对同一个文件发出不同的命令。例如:
$ youtube-dl aB54c4p0eo #I made this video id up on the spot
$ mv aB54c4p0eo.flv kittens.flv
$ vlc kittens.flv
$ rm kittens.flv
有没有办法在当前命令中重用上一个命令中的参数,这样我就不必重写它?
答案1
alt-.
当然很好,但是如果您碰巧已经知道想要哪个编号参数,您可以更快:!:n
是n
上一个命令的第 th 个参数。
将其与魔法空间结合起来通常会很有帮助。要启用此功能,请输入您的 .inputrc Space: magic-space
。启用此功能后,当您在 后面键入空格时!:2
,它将立即扩展到其值,而不是等待您按 Enter 键。避免您意外地抓住错误的论点。
答案2
在 bash 中,您可以使用快捷键Alt
+ .
。
点击一次,会给你最后一个参数。更多地点击它会循环你最后的论点。
答案3
在 bash 中,“上一个命令行上的最后一个单词”的指示符是!!$
:
$ echo hello world
hello world
$ echo goodbye !!$
echo goodbye world # this is bash echoing actual cmd line before execution
goodbye world
您还可以使用“插入符号语法”来替换最初的命令行的一部分;如果您想在同一个文件上执行多个命令,这会很方便:
file file.dat
^file^ls -l^ #gives `ls -l file.dat`
^ls -l^stat # gives `stat file.dat`
还有更多的可能性;请参阅“历史替换”bash(1) 手册页了解详情。
答案4
一种相对较慢的方法是调用前一个命令↑并将前一个命令替换为新命令。