Bash

在執行之前在命令中展開萬用字元

  • February 19, 2018

假設我想輸入這樣的內容:

rm build/* tmp/*

我即將執行它,但我想在執行之前擴展萬用字元,以便驗證將要發生的事情。我怎樣才能做到這一點?

這是我正在尋找的工作流程:

$ rm build/* tmp/* <press some magic key>
$ rm build/foo build/bar tmp/wiz tmp/buzz

(編輯)另一個範例工作流程:

$ # Check what is in directory: 
$ ls -0
foo1
foo2
bar
$ # I want to delete foo1 and foo2, but want to do so carefully: 
$ rm f*o <press some magic key>
$ rm foo1 foo2

我可以像這樣擴展其他內容:

cd `hg root` <Ctrl-x>
cd /users/bob/myMercurialRepository

(因為我有Control-x shell-expand-line我的~/.inputrc)。

我雖然man bash查看了 globbing 的描述,但找不到任何有趣的東西。

這取決於你的 shell 的編輯模式。例如,我正在使用 vi 模式和類型Esc*並且萬用字元將得到擴展。

怎麼樣

echo rm build/* tmp/*

或者,在我的版本中bash,在萬用字元之後立即點擊tab``tab會為我提供匹配文件的列表。

要“小心刪除文件”,我建議要麼使用互動標誌rm,要麼再次使用前綴echo

echo rm -i f*o
rm -i f*o

不過,誠然,兩者都不會預先為您提供首選列表。

引用自:https://unix.stackexchange.com/questions/195552