如何使用 bash 历史记录来运行带有历史记录中命令的参数的命令?
我知道我可以用来!!
重新运行上一个命令,但是如何使用这些参数运行新命令?
例如,我第一次运行:
~/somefolder/script.sh somefile
我想快点跑
~/somefolder/script.sh anotherfile
我试过了!! anotherfile
,但是没用。
或者更好的是,我如何使用!-2 newarguments
新参数运行倒数第二个历史命令?
我不想使用箭头滚动浏览历史记录,然后使用退格键浏览参数。
答案1
要选择命令名称,请使用 :0 修饰符:
$ man bash
$ !!:0 csh
man csh
使用 !* 选择包含最新命令的所有参数
$ man sed awk perl
$ which !*
which sed awk perl
/usr/bin/sed
/usr/bin/awk
/usr/bin/perl
选择相对于当前命令先前执行的第二个命令,并使用以下命令选择其所有参数:
$ echo !-2:*
echo sed awk perl
sed awk perl
选择相对于当前命令先前执行的第 3 条命令,并选择其第 2 个参数:
$ echo !-3:2
echo awk
awk
选择以“which”开头的最后一个命令并插入其第 3 个参数:
$ echo !which:3
echo perl
perl
综上所述,您的两个具体问题的答案是:
- 参见上面的第一个例子。
- !-2:0 "新参数列表"
答案2
如果你按下键盘快捷键Ctrl-R在终端中,输入命令的任何特定部分,它都会进行反向搜索并为您找到它。无需一直滚动。