呼籲大家多遵守交通規則 - Linux

Lucy avatar
By Lucy
at 2018-11-02T10:42

Table of Contents

容我發發牢騷,請包涵

這學校老師應該都講過吧...
寫程式時,要記得回傳個有意義的 exit code
不然, 別的程式往往都要額外浪費時間處理

當然, 特別是指令行程式, GUI 就不那麼在.
但是無論是用 C 來 code, 還是任何 script
都有我們應該共同遵守的交通規則.

事情是這樣的
剛剛用到 pacmd(1)
這是 pulseaudio-utils 套件裡的程式

$ pacmd set-default-sink 1
$ echo $?
0
$ pacmd set-default-sink 你老師
Sink 你老師 does not exist.
$ echo $?
0

對的給 0, 不對的也給 0
那我不是還要去 parse "你老師" 那一行
來判斷這個指令的執行結果
(而且"你老師"也應該送到 stderr,
不是 stdout, 雖然此處並不關鍵...)

要是每個 CLI 程式都採這樣行為
我看我這個小 script 起碼變成兩倍大
而且要多花一倍的時間在這上面

沒記錯的話, 上一次碰到的是 xrandr(1)
搞得整個地球上的人都在想辦法繞道...

大家都遵守交通規則, 最後受益的也是大家
而且整體效率一定會顯著提升

有一次, 搭德國人車子在縣道
遠看, 另一台高速從旁邊衝出來
這個德國朋友卻繼續談笑, 不減速
我緊張地用手指著那台車....
他只說

沒關係, 我們在幹道

然後繼續向前衝, 眼看就...
咦? 他真的停下來了也!

這樣不是大家都省事嗎?
多包涵吧



--
Tags: Linux

All Comments

Caitlin avatar
By Caitlin
at 2018-11-04T04:03
這很正常,一堆程式搞不清楚啥該送去stderr/stdout
exit code 就更不用說
最後變成 跑去 pipe grep string
Elvira avatar
By Elvira
at 2018-11-07T12:04
這不就是命令列程式的日常嗎? XD
Zenobia avatar
By Zenobia
at 2018-11-12T04:26
man 看看, exit status 有沒有亂唬人
Gary avatar
By Gary
at 2018-11-14T09:25
印象中還看過有人用相反,正確回 1 錯誤回 0 的……
Xanthe avatar
By Xanthe
at 2018-11-16T10:36
送 patch 造福萬千
Faithe avatar
By Faithe
at 2018-11-17T14:57
其實你要多動動腦不是要人跟隨你的規則...
Eartha avatar
By Eartha
at 2018-11-18T23:29
也不是所有錯誤都要返回,像 rm -f 就算找不到檔案,
也不會回報錯誤。
Daph Bay avatar
By Daph Bay
at 2018-11-20T11:50
SUCCESS 正是 -f 這選項的主要功能喔
Regina avatar
By Regina
at 2018-11-21T22:14
換句話說,-f 正是為了回報 SUCCESS 而設計的
Genevieve avatar
By Genevieve
at 2018-11-22T17:50
所以它的行為是符合設計的 feature, 不是 bug
Zanna avatar
By Zanna
at 2018-11-26T12:49
我以為這已經是常識等級,沒想到還是需要解釋
Ula avatar
By Ula
at 2018-11-28T22:49
現代公民實在太忙了,沒空看說明書
Sierra Rose avatar
By Sierra Rose
at 2018-11-30T20:47
前輩們有空的話,還請多多推廣交通安全常識
Emma avatar
By Emma
at 2018-12-02T03:09
其實我應該多加一句話,效果可能會更好的... 好吧
Noah avatar
By Noah
at 2018-12-07T02:58
有人應要腳踏車上高速公路,考驗汽車駕駛的智慧?
Elma avatar
By Elma
at 2018-12-11T16:56
本文提的其實有點像rm -f 沒刪到檔算正常結束還是錯誤?
這點我是覺得由開發者決定,而不像rm刪除權限不足一樣確定
Mary avatar
By Mary
at 2018-12-14T11:20
是錯誤.
David avatar
By David
at 2018-12-18T10:45
ls 也類似 'ls 你老師' 但沒'你老師'算不算錯誤?
Gilbert avatar
By Gilbert
at 2018-12-19T08:44
如果沒有檔案算錯誤,那麼 ls *a 但沒有a結尾這些都得變錯
誤. 所以還是可能還是由開發者決定
a結尾的檔
Erin avatar
By Erin
at 2018-12-23T18:32
目前linux的rm是設計-f來區隔,沒用-f沒找到檔就算錯誤
Elma avatar
By Elma
at 2018-12-27T23:50
ls無類似機制,沒找到就報錯. 你文中的例子比較傾向ls
Rebecca avatar
By Rebecca
at 2018-12-29T23:01
那個行為 POSIX 應該有規範吧

兩張網路卡都對內 如何routing

Todd Johnson avatar
By Todd Johnson
at 2018-11-01T14:32
是這樣的 內網server有兩張網路卡 一張DMZ 一張intranet A. 正常來說辦公室內部連入intranet會通 DMZ不會通 B. 改defualt成DMZ了話DMZ會通intranet不會通 https://imgur.com/a/XgkeRVg 但我想要內部不管走DMZ或intranet都會 ...

HURRICANE ELECTRIC

Susan avatar
By Susan
at 2018-11-01T10:31
※ [本文轉錄自 IPv6 看板 #1RsanD5r ] 作者: kuo1102 (擺枝草羊羚趕) 看板: IPv6 標題: [問題] HURRICANE ELECTRIC 時間: Thu Nov 1 08:43:54 2018 有人說現在 ISP 都有設 IPV6 不用 TUNNEL BROKR ...

IP-> hostname

Zenobia avatar
By Zenobia
at 2018-10-31T18:10
問題是這樣,我在幫忙做系統還原的時候架設了Server+資料服務 Server是 Ubuntu 16.04 server 服務是用 Apache 但是我另外一個同事架設前台(windows server 2008+wamp) 後用 http://10.11.12.13 來接我這台的資料 但是資料卻接不到 到 ...

IBM 轉型最大豪賭,340 億美元收購紅帽

Lydia avatar
By Lydia
at 2018-10-29T13:59
IBM 轉型最大豪賭,340 億美元收購紅帽 根據聯合聲明,IBM 將以每股 190 美元購買 Red Hat 的所有股票,而在交易宣布之前,紅帽股價收於 116.68 美元, 溢價近 60%。IBM 表示,紅帽將成為 IBM 混合雲部門的一部份,且原紅帽執行長 Jim Whitehurst 將加入 IBM ...

vim如何設定statusline可顯示出visual mo

Skylar Davis avatar
By Skylar Davis
at 2018-10-29T11:33
之前的環境可以顯示出visual mode時選了幾行 顯示在statusline google了一陣子都沒找到如何顯示這個資訊 請問有人知道這個語法是什麼嗎? ----- Sent from JPTT on my LGE LG-H990. - ...