【发布时间】:2016-07-14 19:01:21
【问题描述】:
我早些时候在我的终端上玩耍,发现我可以通过创建一个与命令。但是,我不能执行 'multi-word' 命令('rm\ -rf *','ls -a', 'python2.7\ test.py')(这也让我发现你不能使用 'rm -rf *' 删除名为 '-rf' 的目录),除非参数按字母顺序排列。看起来,当您只是将 * 传递给 bash 时,它会按字母顺序读取文件/目录的名称,并将每个连续的名称作为参数传递给前一个命令。示例:
$ mkdir cat
$ touch dog
$ vim dog # at this point I put 'Hello!' into dog
$ *
Hello!
为什么通配符不允许我执行带有空格的文件的命令,但允许我执行多个文件名的命令?谢谢!
编辑:由于某种原因,别名也不起作用。示例:
$ alias lsa='ls -a'
$ mkdir lsa
$ *
No command 'lsa' found, did you mean:
...
lsa: command not found
有人知道这是为什么吗?
【问题讨论】:
-
不知道这样做的目的是什么,只是不建议创建名为“sudo”的文件。
-
我只是觉得它很简洁,想知道更多关于它背后的机制的细节。不知道为什么启用它。
-
也许“strace *”会有助于理解...
标签: linux bash shell terminal wildcard