詳解Linux shell命令幫助格式

linux shell命令通常可以通過-h--help來打印幫助說明,或者通過man命令來查看幫助,有時候我們也會給自己的程序寫簡單的幫助說明,其實幫助說明格式是有規律可循的

幫助示例

下面是git reset命令的幫助說明,通過man git-reset可以查看

git reset [-q] [<tree-ish>] [--] <paths>...
git reset (--patch | -p) [<tree-ish>] [--] [<paths>...]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]

對于命令和參數大致有如下幾種類型

沒有任何修飾符參數 : 原生參數
<>  : 占位參數
[]  : 可選組合
()  : 必選組合
|   : 互斥參數
... : 可重復指定前一個參數
--  : 標記后續參數類型

下面來一一介紹

參數類型解讀

原生參數

說明文檔里的字符即為命令需要使用的字符,比如以上命令的

git reset

這種參數在使用時必需指定,且和說明文檔里的一致

占位參數

表示方式:<>

和原生參數類似,都是必需指定的,只不過占位參數的實際字符是在使用時指定的,同時為了方便閱讀會用一個描述詞匯來表示,并以<>包圍,比如

<paths>

表示路徑,使用時可以指定為具體的路徑,而paths只是起一個說明作用,有些幫助說明里也會用大寫來表示占位參數,比如將以上參數說明寫成PATHS

可選組合

表示方式: []

括號里的參數為可選參數,比如usage第二個里面的[-q],則-q為可選參數

可選項和占位參數也可以同時使用,如

[<commit>]

表示該參數可以指定某次提交,也可以不指定

必選組合

表示方式: ()

括號里的參數必需指定,通常里面會是一些互斥參數,比如

(--patch | -p)

表示--patch-p這兩個參數必需指定一個

互斥參數

表示方式: |

互斥參數一般都在()[]里,表示該參數只能指定其中一個,比如

[--mixed | --soft | --hard | --merge | --keep]

重復參數

表示方式: ...

表示前一個參數可以被指定多個,比如

<paths>...

<paths>是一個占位參數,使用時必需指定為路徑,...并表示可以指定多個路徑。重復參數的一個典型使用場景就是移動文件,將多個文件移動到一個目錄下,比如如下命令

git mv [<options>] <source>... <destination>

我們可以這樣使用

git mv -f a.cpp b.py dir

此時options對應為-f參數,source對應為a.cpp b.py,destination對應為dir

標記后續參數類型

表示方式: --

表示后續參數的某種類型,比如這里如果使用如下命令

git reset -p -- xx

對比第一個命令,這里的xx對應的應該是<paths>參數,當我們指定--之后,則git會認為xx就是一個路徑,那怕它是特殊符號或者路徑并不存在。這是shell命令的一個通用方式,比如我們有一個文件名為-h,如果想刪除這個文件,執行

rm -h

肯定是無法刪除的,因為這時-h會被認為是rm的一個參數選項,應該使用

rm -- -h

這時shell會將-h解釋為一個文件名傳遞給rm命令

解讀實戰

最后來解釋一個比較復雜的幫助說明

git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|<type>|--textconv) <object>

該命令參數由四個部分,其中gitcat-file為原生參數,()里的為可選組合,<object>為占位參數

組合又由6部分組成,為互斥關系

-t [--allow-unknown-type]
-s [--allow-unknown-type]
-e
-p
<type>
--textconv

因此該命令的幫助說明可以拆分如下

git cat-file -t <object>
git cat-file -t --allow-unknown-type <object>
git cat-file -s <object>
git cat-file -s --allow-unknown-type <object>
git cat-file -e <object>
git cat-file -p <object>
git cat-file <type> <object>
git cat-file --textconv <object>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,218評論 2 33
  • 轉載 原生參數 說明文檔里的字符即為命令需要使用的字符git reset這種參數在使用時必需指定,且和說明文檔里的...
    ifeelok0319閱讀 456評論 0 0
  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,558評論 9 467
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,269評論 25 708