在文件上运行命令时,有没有办法在不键入整个名称的情况下引用文件?

use*_*021 9 bash

例如:

tar xvf test.tar.gz ;  rm test.tar.gz
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法在第二次执行时引用文件名?

我在想这样的事情(这是无效的):

tar xvf test.tar.gz ; rm $1
Run Code Online (Sandbox Code Playgroud)

有什么可能吗?

我完全了解通配符。

ilk*_*chu 19

您可以先将文件名分配给变量:

f=test.tar.gz; tar xvf "$f"; rm "$f"
Run Code Online (Sandbox Code Playgroud)

或者使用$_特殊参数,它包含上一个命令的最后一个字,这通常是(但当然不总是)您一直在使用的文件名:

tar xvf test.tar.gz; rm "$_"
Run Code Online (Sandbox Code Playgroud)

这也适用于多个命令,只要文件名始终是命令的最后一个参数(例如echo foo; echo $_; echo $_打印三遍foo。)

顺便说一句,您可能需要考虑使用tar ... && rm ..., 即使用&&运算符而不是分号。这样,rm如果第一个命令失败,将不会运行。


归档时间:

查看次数:

523 次

最近记录:

7 年,4 月 前