你如何回忆起你在 bash 中使用的上一个命令的最后一个(第 n 个?)传递的参数?

你如何回忆起你在 bash 中使用的上一个命令的最后一个(第 n 个?)传递的参数?

我经常对同一个文件发出不同的命令。例如:

$ 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-.当然很好,但是如果您碰巧已经知道想要哪个编号参数,您可以更快:!:nn上一个命令的第 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

一种相对较慢的方法是调用前一个命令并将前一个命令替换为新命令。

相关内容