[英]macos command line params not working at the end
就當你在像貝殼鍵入命令Linux系統rm * -rf
,該順序*
和-rf
沒有關系。 我的shell用相同的方式解釋它。 現在,在Mac上,當我輸入rm -rf *
一切正常,但如果我執行rm * -rf
,則顯示rm: -rf: No such file or directory
錯誤rm: -rf: No such file or directory
我在具有fish和bash shell的macOS和linux上進行了嘗試。 同樣的問題。
有誰知道為什么macOS上的命令解釋器會認為命令末尾的-rf
沒有被解釋為命令的參數?
這與外殼無關,而與命令有關。 命令行參數的解析不是Shell的功能和職責,而是實際命令的功能和職責。 在這兩個系統中,shell均以指定的順序忠實地傳遞命令行參數,然后由命令的實現來解析它們認為合適的參數。
在linux中,核心實用程序通常是GNU實現的,而在osx上,核心實用程序通常是BSD實現的。
命令的man
頁應告訴您它是哪種實現。
例如最后一行man rm
在Linux中是這樣的:
GNU coreutils 8.21 March 2016 RM(1)
在osx上:
BSD January 28, 1999 BSD
歷史上,任何shell中的參數順序在Unix中都是相關的。
rm順便說一句,甚至還有一個選項-停止解析選項(例如,能夠刪除以“-”開頭的文件)
請參見rm(1)和getopt(3)手冊頁
如果外殼程序不遵守參數的順序,則會給出以下結果:
$ touch a b
$ mv a b
將保留什么文件?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.