2017-07-26 47 views
4

我是學生,作爲我的一部分,我必須重新編碼ls命令並儘可能地重現其行爲。是否有任何既定的'ls'參數?

在Mac(埃爾卡皮坦10.11.6),使用終端的iTerm 2(zsh的),我得到:

user> ls . -R 
ls: -R: No such file or directory 

而且在門(最新版本),默認的文本界面(bash)的我得到:

user> ls . -R 
<current directory content> 

雖然我寧願相信拱門,是正確的已指定目錄後LS拒絕它的選項?是否有任何文件聲明參數順序?

+1

順便說一下,'ls'不是bash或zsh的一部分,而是OS供應商提供的外部命令;它將在給定的操作系統上表現相同(除非安裝了替代版本,例如Macports或Homebrew,沒有功能,別名或明確改變行爲的其他配置),無論哪個外殼正在使用。 –

+0

我不確定,這就是爲什麼我包括它^^感謝讓我知道 –

回答

10

POSIX utility syntax guidelines條目#9:

準則9:

所有選項都應該先在命令行操作數。

因此,POSIX保證將被支持的使用是ls -R .,作爲-R是一個選項,.是一個操作數。

GNU工具通常不強制執行此指南(這就是爲什麼Arch會讓您以相反的順序提出您的論點) - 但爲了最大程度地實現可移植性,假定要強制執行,編寫軟件是明智的。

如果你想成爲某些-R將被視爲一個操作數,而不是一個參數,無論您的平臺,您可以使用--兩個類別分開:ls -l -- -R將把-l作爲一個選項,-R作爲操作數,因此將查找名爲-R的文件或目錄並提供長格式列表;這是由POSIX實用程序語法指南#10定義的。

相關問題