终端:对上一个文件使用不同的命令

终端:对上一个文件使用不同的命令

我知道有一个!!命令可以重用以前的命令。如何重用上一个命令中指定的文件或目录,但对其使用不同的命令?

示例:我想查看文件的内容,并在必要时将其删除。就像是:

$ cat example.txt

"output indicates deletion"

$ rm !!

答案1

$ echo foo
foo
$ bar !!:$
bar foo
The program 'bar' is currently not installed...

http://www.gnu.org/software/bash/manual/bashref.html

答案2

您可以使用:

  • rm Esc.- 键入rm后跟Space,然后按Esc后跟.(不同时)。如果前一个命令没有参数,您将获得前一个命令本身。
  • rm Alt+ .- 键入rm,然后SpaceAlt.(同时)。事实上,使用这种方式并继续按下.(无需释放Alt),您将从历史记录中获得每个命令的最后一个参数。如果命令没有参数,您将获得命令本身。
  • rm !*- 在这种情况下,您将从之前的命令中获取所有参数。如果前面的命令没有参数,你将什么也得不到。

一般来说:<command> Esc.<command> Alt+.<command> !*

来源:使用上一个命令的参数运行命令

答案3

所有这些都将实现您想要的:

rm !$

表示!$最后一个命令的最后一个参数。

rm!:1

!:1表示最后一个命令的参数 1,其中命令本身是参数 0。您可以通过这种方式从最后一个命令中挑选出各个参数。

^cat^rm^

将字符串替换cat为上一个命令中的字符串rm并运行结果。^在这个简单的例子中,你实际上可以省略最后一个。

rm !*

这运行rm全部最后一个命令中的非命令参数。所以参数从 1 到$.如果最后一个命令有多个参数,则此变体和最后一个变体非常有用。

相关内容