Shell help格式詳解

2021-09-26 03:24:28 字數 2295 閱讀 9662

前言

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

BMP格式詳解

列舉 c windows blue lace 16.bmp 位 件頭的格式 typedef structbitmapfileheader 檔案頭結構體,14位元組 typedef structbitmapinfoheader 位圖資訊頭,40位元組 bmp檔案詳解 2 2007 03 21 12 2...

Crontab 格式詳解

第1列分鐘1 59 第2列小時1 23 0表示子夜 第3列日1 31 第4列月1 12 第5列星期0 6 0表示星期天 第6列要執行的命令 下面是crontab的格式 分 時 日 月 星期 要執行的命令 這裡有crontab檔案條目的一些例子 30 21 usr local apache bin a...

VCF格式詳解

cvf是用於描述snp,indel和sv結果的文字檔案。在gatk軟體中得到最好的支援,當然samtools得到的結果也是cvf格式,和gatk的cvf格式有點差別。先給出乙個vcf檔案的範例 fileformat vcfv4.0 chrom pos id ref alt qual filter i...