簡體   English   中英

macos命令行參數最終無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM