Shell-help格式詳解


前言

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

幫助示例

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

git reset [-q] [ ] [--] ...
git reset (--patch | -p) [ ] [--] [ ...]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [ ]

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

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

下面來一一介紹

參數類型解讀

原生參數

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

git reset

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

占位參數

表示方式: <>

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

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

可選組合

表示方式: []

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

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

[ ]

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

必選組合

表示方式: ()

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

(--patch | -p)

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

互斥參數

表示方式: |

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

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

重復參數

表示方式: ...

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

...

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

git mv [ ] ...

我們可以這樣使用

git mv -f a.cpp b.py dir

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

標記后續參數類型

表示方式: --

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

git reset -p -- xx

對比第一個命令,這里的xx對應的應該是 參數,當我們指定--之后,則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| |--textconv)

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

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

-t [--allow-unknown-type]
-s [--allow-unknown-type]
-e
-p

--textconv

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

git cat-file -t
git cat-file -t --allow-unknown-type
git cat-file -s
git cat-file -s --allow-unknown-type
git cat-file -e
git cat-file -p
git cat-file
git cat-file --textconv

posted @ 2017-08-29 16:33  bamboo233  閱讀( 1483)  評論( 0編輯  收藏


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM