如何使用 bash history 使用历史记录中的参数来运行命令?

如何使用 bash history 使用历史记录中的参数来运行命令?

如何使用 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

综上所述,您的两个具体问题的答案是:

  1. 参见上面的第一个例子。
  2. !-2:0 "新参数列表"

答案2

如果你按下键盘快捷键Ctrl-R在终端中,输入命令的任何特定部分,它都会进行反向搜索并为您找到它。无需一直滚动。

相关内容