作者hijkxyzuw (i,j,k) ×(x,y,z)
看板Linux
標題Re: [問題] 有時-version,有時--version
時間Wed Aug 30 15:22:26 2017
如果你寫過程式, C 、 bash 、 perl 隨便,
就知道在程式裡都是收到一個文字陣列。
像 ./abc -a b --color=always "my file.txt"
你收到的就是:
['./abc', '-a', 'b', '--foo=bar', '-version', 'my file.txt']
一切看程式怎麼寫。
有幾種寫法,老程式會用單字母,
要接其它就直接寫在後面,不能有空格:
./foo -a -Fmyfile.txt
大部份不能連寫:
./foo -aF
比較好的慣例是長選項用 -- ,短選項用 - 。
選項有參數就用空格隔在後面,
避免和選項連寫混滛:
iconv -i big5 -o UTF-8
iconv -li big5
現在好像如果是較複雜的命令像 git 有子命令的,
就變成 git status ,
以前 dpkg 是 dpkg -i ,apt 就變 apt install 。
現在有附加參數的命令多可以空隔,
長選項有用等號也用有空格的。
grep --color=always
dpkg --install foo.deb
長選項也用 - 好像是 bsd 風格?
convert -rotate 90
有的還有用到加號,一時忘記有什麼範例。
./foo +border -background
常見的通用選項有 -h --help ,
一般這兩個會保留,當然 -help 也是有。
version 會用 -V --version , -version 也有。
7z 和 unrar 的風格:
7z a new.7z a.txt b.txt
7z x file.7z
7z h # 顯示說明
dd 的風格:
dd if=/dev/sda of=/dev/sdb
※ 引述《dharma (達)》之銘言:
: git --version
: unity --version
: 上面是兩個橫槓
: X -version:查X Server版本
: 上面是一個橫槓
: 查版本的指令
: 有的是--version,有的是-verison
: 有什麼規則嗎
: Thanks
我一定是太無聊才會打這篇
--
+------+
| 胡 | 不要因為偉人的照片。
| |
| 適 | 就輕易相信文字內容。
+------+
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.102.187
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1504077749.A.CFB.html
※ 編輯: hijkxyzuw (140.116.102.187), 08/30/2017 15:26:44
→ kenduest: 一般目前開發若要取 command 參數,若以 c 程式庫來說 08/30 15:37
→ kenduest: 一般用getopt() 來處理,在 bash script 也可以用getopt 08/30 15:38
推 OSDBNetwork: 太無聊才會打這篇 XD 08/30 16:41
推 ddtsatan: 推 08/30 19:26
推 andrew43: 看手冊無敵。謝謝分享。 08/30 20:21
→ MOONRAKER: 了解getopt()卡實在 不用瞎子摸象 08/30 23:15
推 Neisseria: 推 getopt 08/31 07:43
記得之前寫一個 script ,
想要有功能是如果某選項不帶參數,
就視參數為預設值。
然後 getopt 好像做不到,就沒有用。
例如:
show # 列出所有結果
show -c 20 # 列出最後 20 筆
show -c # 列出最後 10 筆, 10 為預設值
※ 編輯: hijkxyzuw (140.116.102.187), 08/31/2017 11:14:54
推 Bencrie: 做得到啊,前幾天才寫過 08/31 11:51
→ Bencrie: 帶幾個參數就用 shift 控制 08/31 11:52
→ dou0228: 可以阿,getopt man page 就有寫了 08/31 12:08