six*_*ude 6 command-line bash wildcards
假设我想输入如下内容:
rm build/* tmp/*
Run Code Online (Sandbox Code Playgroud)
我即将运行它,但我想在执行之前扩展通配符,以便我可以验证即将发生的事情。我怎样才能做到这一点?
这是我正在寻找的工作流程:
$ rm build/* tmp/* <press some magic key>
$ rm build/foo build/bar tmp/wiz tmp/buzz
Run Code Online (Sandbox Code Playgroud)
(编辑)另一个示例工作流程:
$ # 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
Run Code Online (Sandbox Code Playgroud)
我可以像这样扩展其他东西:
cd `hg root` <Ctrl-x>
cd /users/bob/myMercurialRepository
Run Code Online (Sandbox Code Playgroud)
(因为我Control-x shell-expand-line在我的~/.inputrc)。
我虽然man bash看着通配符的描述进行了挖掘,但找不到任何有趣的东西。
怎么样
echo rm build/* tmp/*
Run Code Online (Sandbox Code Playgroud)
或者,在我的 版本中bash,tabtab在通配符后立即点击会给出匹配文件的列表。
要“小心地删除文件”,我建议使用交互标志 to rm,或者再次使用前缀echo
echo rm -i f*o
rm -i f*o
Run Code Online (Sandbox Code Playgroud)
诚然,两者都不会给你预先列出的首选列表。
这取决于您的 shell 的编辑模式。例如,我使用 vi 模式并输入Escand *,通配符将得到扩展。