有没有办法在不重新输入整个路径的情况下引用目录中的多个文件?

33 bash arguments

在 bash shell 中,当我必须删除同一目录中的多个文件时,我目前需要执行以下操作:

rm /some/path/file1 /some/path/file2

有没有更短的方法来写这个,这样我就不必在/some/path/不使用变量或更改工作目录的情况下重新输入?

也许类似于:

rm /some/path/(file1,file2)

che*_*ner 54

你很接近:

rm /some/path/{file1,file2}
Run Code Online (Sandbox Code Playgroud)

甚至

rm /some/path/file{1,2}
Run Code Online (Sandbox Code Playgroud)

相关的并由其他 shell 支持的模式是

rm /some/path/file[12]
Run Code Online (Sandbox Code Playgroud)

前两个扩展为两个显式文件名参数;第三个是/some/path匹配所有文件的模式。

  • 注意逗号 ** 不得** 后面有空格可能会有所帮助。一开始就把我绊倒了。 (3认同)

lga*_*rzo 8

或者,您可以利用 Bash 中的 Readline 库。这是一种解决方法,但相对容易输入。

  1. ls /some/path/
  2. rm ESC.file1 ESC.file2

(假设您的元前缀是ESC关键。)

ls一个命令中的额外内容将历史记录中的路径作为上一个命令的最后一个参数,ESC.(或如手册所述M-.,甚至M-_):

插入 [s] 上一个命令的最后一个参数(上一个历史条目的最后一个字)。

因此,您实际上是在文件名之前输入了最后一个路径。(请注意尾随斜线ls线)。