如何在 bash 交互式 shell 中轻松地从上一个命令中获取倒数第二个(倒数第二个)单词/参数?我经常在后台运行命令,我想获取之前指定的文件&
,例如,
% echo foo > /tmp/foo &
% cat !$
% &
在上面的例子中,!$
给出最后一个词,&
。但我想要倒数第二个参数,/tmp/foo
请注意,可以使用范围如 的单词指示符!-1:3
,但这对于包含大量单词的命令是不切实际的,因为它不能很快看出有多少单词,例如,
% (set -x; date; pwd; git status; git diff; git log | tail -30; date; args=--verbose time make test; date) >& /tmp/log/make.test.20150122-Thu-0834 &
% echo !-1:30
/tmp/log/make.test.20150122-Thu-0834
上面的例子可行,但是你要数一数,知道你要的词是第 30 个词,既费时又容易出错。
有没有一种简单的方法可以获得倒数第二个(倒数第二个)单词?
更新:请注意,我正在寻找要在命令行上键入的内容(例如,历史扩展,例如!!
事件指示符或$
单词指示符),而不是使用readline 键绑定(例如,esc键)。
(请注意,这个问题是指交互式 shell 中前一个命令的参数,而不是从命令行传递给 shell 脚本的参数,正如这里的一些答案和评论所指的那样。)