1. Linux下可執行程式的Shell傳參格式規范
Linux下的可執行程式在運行時經常需要傳一些引數,而這些引數是有規范的,包括我們自己寫的在Linux系統下運行的Shell腳本、Python腳本等可執行程式,最好也遵循相關規范,我們下面以Linux命令為例來講解引數規范:
Linux命令列的格式規范如下:
orion-orion@MyDesktop ~ % command [-options] parameter1 parameter2
上述命令詳細說明如下:
- 一行命令中第一個輸入的部分絕對是命令(command)或可執行檔案(例如Shell腳本),
- 中括號
[]并不存在于實際的命令中,表示該引數是可選的,而加入選項設定時,通常選項前會帶-符號,例如-h;如果要使用選項的完整全名,選項前會帶--符號,例如--help, parameter1,parameters2可以為依附在選項后面的引數,也可以為command的引數,- 命令、選項、引數之間以空格來區分,無論空幾格Shell都視為一格,所以空格是很重要的特殊字符,
- 命令太長的時候,可使用反斜杠(
\)來轉義回車鍵,使命令連續到下一行(注意,換行符屬于特殊字符,而反斜杠后立刻接著特殊字符才能轉義),
此外,需要注意在Linux系統中英文大小寫字母是不一樣的,例如cd命令和CD并不同,
2. 實體
我們下面舉幾個命令的傳參實體,
ls -al ~
ls為命令名,-al是-a -l的簡寫,意為使用-a(列出包括隱藏檔案在內的所有檔案)與-l(列出檔案屬性)這兩個選項,~為ls命令的引數,意為家目錄,
tar -xvf test3.zip -C .
tar為命令名,-xv意為使用-x(解壓操作)與-v(可視化解壓程序)這兩個選項,-f意為指定壓縮檔案的名稱,后面依附著test3.zip做為該選項的引數,-C意為指定解壓后的目錄,后面依附著.(當前目錄)做為該選項的引數,
注意,
-f test3.zip也可以寫成--file test3.zip或--file=test3.zip(為--開頭的選項設定引數時都可以使用等號賦值),
當我們直接在Shell中鍵入man command查看命令操作說明(manual)時,可以看到檔案中對引數格式有詳細描述:
TAR(1) General Commands Manual TAR(1)
NAME
tar – manipulate tape archives
SYNOPSIS
tar [bundled-flags ?args?] [?file? | ?pattern? ...]
tar {-c} [options] [files | directories]
tar {-r | -u} -f archive-file [options] [files | directories]
tar {-t | -x} [options] [patterns]
像其他可執行程式(如Git)一般也會遵循類似的傳參規范:
GIT(1) Git Manual GIT(1)
NAME
git - the stupid content tracker
SYNOPSIS
git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[--super-prefix=<path>] [--config-env <name>=<envvar>]
<command> [<args>]
可以看到,git在設定--開頭的選項的引數時就希望我們采用=賦值方式,如--git_dir=/home/domain/.git,這種方式比--git_dir /home/domain/.git更為直觀,
Python腳本的運行也采用類似的傳參風格,如:
python3 search.py -v -p spam --pat=eggs foo.txt bar.txt -o results \
--speed=fast
具體如何用Python撰寫決議命令列選項的程式,我們下一節再展開敘述,
參考
- [1] 鳥哥. 鳥哥的 Linux 私房菜: 基礎學習篇[M]. 人民郵電出版社, 2018.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478464.html
標籤:Linux
上一篇:認識并安裝WSL
下一篇:Apache服務的搭建與配置
