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

bad*_*adp 10 bash

很多时候我在同一个文件上发出不同的命令。例如:

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

将其与魔法空间结合起来通常很有帮助。要启用它,请输入您的 .inputrc Space: magic-space。启用后,当您在 之后键入空格时!:2,它将立即扩展为其值,而不是等待您按回车键。避免您意外抓住错误的论点。


Chr*_*ian 9

在 bash 中,您可以使用快捷方式Alt+ .
打一次,会给你最后一个论点。多打它会循环你最后的论点。


Ric*_*rri 5

在 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) 手册页中的“历史替换” 。

  • `!!$` 也可以写成 `!$` 。 (3认同)