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

loc*_*ost 3 bash history

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

我知道我可以!!用来重新运行最后一个命令,但是如何使用这些参数运行新命令?

例如,我首先运行:

~/somefolder/script.sh somefile
Run Code Online (Sandbox Code Playgroud)

我要快跑

~/somefolder/script.sh anotherfile
Run Code Online (Sandbox Code Playgroud)

我试过了,!! anotherfile但没有用。

或者更好的是,我如何运行!-2 newarguments以使用新参数运行倒数第二个历史命令?

我不想使用箭头来滚动历史,然后在参数上退格。

Bil*_*key 5

要选择命令名称,请使用 :0 修饰符:

$ man bash
$ !!:0 csh
man csh
Run Code Online (Sandbox Code Playgroud)

使用 !* 选择带有最新命令的所有参数

$ man sed awk perl
$ which !*
which sed awk perl
/usr/bin/sed
/usr/bin/awk
/usr/bin/perl
Run Code Online (Sandbox Code Playgroud)

选择先前相对于当前命令执行的第二个命令,并使用以下命令选择其所有参数:

$ echo !-2:*
echo sed awk perl
sed awk perl
Run Code Online (Sandbox Code Playgroud)

选择先前相对于当前命令执行的第三个命令,并选择其第二个参数:

$ echo !-3:2
echo awk
awk
Run Code Online (Sandbox Code Playgroud)

选择最后一个以“which”开头的命令并插入它的第三个参数:

$ echo !which:3
echo perl
perl
Run Code Online (Sandbox Code Playgroud)

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

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