Re: [問題] 有時-version,有時--version

看板Linux作者 (i,j,k) ×(x,y,z)時間8年前 (2017/08/30 15:22), 8年前編輯推噓5(505)
留言10則, 8人參與, 最新討論串2/2 (看更多)
如果你寫過程式, 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

08/30 15:37, , 1F
一般目前開發若要取 command 參數,若以 c 程式庫來說
08/30 15:37, 1F

08/30 15:38, , 2F
一般用getopt() 來處理,在 bash script 也可以用getopt
08/30 15:38, 2F

08/30 16:41, , 3F
太無聊才會打這篇 XD
08/30 16:41, 3F

08/30 19:26, , 4F
08/30 19:26, 4F

08/30 20:21, , 5F
看手冊無敵。謝謝分享。
08/30 20:21, 5F

08/30 23:15, , 6F
了解getopt()卡實在 不用瞎子摸象
08/30 23:15, 6F

08/31 07:43, , 7F
推 getopt
08/31 07:43, 7F
記得之前寫一個 script , 想要有功能是如果某選項不帶參數, 就視參數為預設值。 然後 getopt 好像做不到,就沒有用。 例如: show # 列出所有結果 show -c 20 # 列出最後 20 筆 show -c # 列出最後 10 筆, 10 為預設值 ※ 編輯: hijkxyzuw (140.116.102.187), 08/31/2017 11:14:54

08/31 11:51, , 8F
做得到啊,前幾天才寫過
08/31 11:51, 8F

08/31 11:52, , 9F
帶幾個參數就用 shift 控制
08/31 11:52, 9F

08/31 12:08, , 10F
可以阿,getopt man page 就有寫了
08/31 12:08, 10F
文章代碼(AID): #1PfcUrpx (Linux)
討論串 (同標題文章)
文章代碼(AID): #1PfcUrpx (Linux)