我之前在終端上玩過,發現我可以通過製作單字命令('ls','cat','python2.7','exit')與命令命名相同的文件或目錄。然而,我不能執行'多字'命令('rm \ -rf *','ls -a','python2.7 \ test.py')(這也導致我發現你不能刪除名爲'-rf'的目錄和'rm -rf *')除非參數是按字母順序排列的。表面上看,當你傳入*到bash時,它會按照字母順序讀取文件/目錄的名稱,並將每個連續的名稱作爲參數傳遞給前一個命令。例如: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」的文件。 – pmod
我只是覺得它很整潔,想知道一些關於它背後的機制的更多細節。不知道爲什麼它被啓用。 –
也許「strace *」將有助於理解... – pmod