Windows 和 Unix 下的命令操作有什麼迷人之處?

經常看到一些師兄前輩都用命令,個人感到不理解,覺得GUI更加直觀。請賜教。


首先,命令行程序功能更豐富。一個命令行程序可以包含許許多多的選項,比如最常見的 ping 我剛剛數了一下,大概有30幾個開關和選項,各自有不同的用途。如果將這些選項全部做成圖形界面,這個圖形界面還不如一行命令直觀,而且操作的複雜程度會大幅增加,速度會大幅降低。有很多命令行程序都有相應的圖形界面包裝,如著名的視頻編碼器 mencoder,這些圖形界面包裝固然很好用,但大多數時候無法涵蓋一個命令行程序所有的功能,有時仍然不得不依賴命令行程序解決。

其次,命令行操作更強大。一行命令通常可以使用不止一個命令行程序,將這些程序通過管道連接起來,一個程序的輸出可以直接作為下一個程序的輸入,中間不需要任何人工操作,使得一行命令可以完成許多不同的任務,這一點在圖形界面上是做不到的,或者至少很難做到。當然你可以所用按鍵精靈或者之類的東西代替,但那顯然不及命令行方便。這種將程序之間通過管道連接的思想,可以有效地隔離不同的程序,使得其中的每個程序只要做好自己的事情就可以了,這比一個大的可以一次性做很多事情的程序要更容易編寫,且更不容易出錯。

最後,命令行更節省資源。命令行不需要圖形介面,完全是字元操作,無論是本機儲存運算還是網路傳輸,都要快於圖形界面。

雖然很多時候我也喜歡圖形界面,但個人認為覺得命令行不直觀是一種偏頗的看法。如果熟悉了命令行,很多時候命令行其實非常直觀。


以下摘自&

One evening, Master Foo and Nubi attended a gathering of
programmers who had met to learn from each other. One of the
programmers asked Nubi to what school he and his master belonged. Upon
being told they were followers of the Great Way of Unix, the
programmer grew scornful.

「The command-line tools of Unix are crude and
backward,」 he scoffed. 「Modern, properly designed
operating systems do everything through a graphical user
interface.」

Master Foo said nothing, but pointed at the moon. A nearby
dog began to bark at the masters hand.

「I dont understand you!」 said the programmer.

Master Foo remained silent, and pointed at an image of the Buddha.
Then he pointed at a window.

「What are you trying to tell me?」 asked the
programmer.

Master Foo pointed at the programmers head.
Then he pointed at a rock.

「Why cant you make yourself clear?」 demanded the
programmer.

Master Foo frowned thoughtfully, tapped the programmer
twice on the nose, and dropped him in a nearby trashcan.

As the programmer was attempting to extricate himself from
the garbage, the dog wandered over and piddled on him.

At that moment, the programmer achieved enlightenment.

=========================================================

一晚,無名師和Nubi參加一個程序員的探討會。有個程序員問Nubi和他的老師來自哪個門派。當得知他們是Unix大道的追隨者時,程序員頗為不屑。

「Unix命令行工具太粗糙太落後」,他譏諷道。「現代的、設計得當的操作系統可以在圖形用戶界面中做任何事情。」

無名師一言不發,只是指著月亮。旁邊的一條狗對著他的手狂吠。

「我不明白。」程序員說。

無名師依然緘默,指著一幅佛祖像,然後又指著一扇窗。

「你想說什麼?」程序員問。

無名師指著程序員的頭,接著指著一塊大石。

「請把話說清楚!」程序員要求道。

無名師深深蹙眉,輕拍程序員的鼻子兩下,把他扔到旁邊的垃圾箱中。

程序員試圖從垃圾堆掙扎出來之時,那條狗跑過來在他身上便溺。

此時,程序員此時頓悟了。


我個人覺得,直觀還是圖形界面直觀

但圖形界面缺點有三:

一,開發慢(煩?)。

圖形界面千變萬化,沒有統一的界面標準,很多東西都要自己做出來。

相對的,命令行的話就有很多庫,你只需要聲明哪些參數,哪些參數是什麼類型的,默認值是什麼,哪些參數是開關,哪些參數是可選,哪些參數可以重複出現。

庫可以自動幫你解析用戶的輸入參數,生成一個configuration對象,裡面有你要的所有配置值。而且還能在用戶輸入錯誤的時候自動生成並展示--help提示。

而且工程師都很傲嬌的,不喜歡寫沒技術含量的GUI,都喜歡寫處理邏輯部分。

二,無法使用管道。

管道可以把幾個命令組合起來,像搭積木一樣實現非常強大的功能。

比如我曾經用wget,sed,cut,grep和不到5行的shell腳本寫了個爬蟲去爬我喜歡的漫畫站,並自動把漫畫一頁一頁下載、歸類。

用wget把漫畫目錄頁載下來,輸出給grep;grep找到漫畫入口所在行,輸出給sed和cut;sed和cut把漫畫具體地址截取出來,把地址交給wget;wget下載該本漫畫目錄頁,交給grep解析出每一頁所在行;交給cut和sed解析每一頁漫畫的地址;最後wget下載這一頁漫畫。

shell腳本只做了循環控制和新建目錄的工作。

三、熟練使用者無法提升速度。

如果你對命令行非常熟悉的話,敲鍵盤是比移動滑鼠要快很多的。這一點一開始可能不好理解,但是用多了你就會體會到。

相近一點的例子比如windows里的複製粘貼,Ctrl-A,Ctrl-C,Ctrl-V可比用滑鼠圈選,右鍵菜單里複製粘帖快多了吧,就是這個感覺。

而且如果一個命令要很長時間才能執行完,GUI使用者需要等待任務完成,界面做出反應後才能進行下一步。而由於輸入緩衝區的存在,命令行使用者可以在上一個命令還在執行的時候就盲打下一個命令。


一般命令行使用起來更快, 手指不用脫離鍵盤.

圖形界面有相應速度的時間差, 而且用滑鼠點來點去並不順手.

另外還有些像伺服器只有字元界面, 圖形據說耗費資源.

相對 Windows, 類 Unix 系統命令行功能比較豐富, 並不艱難.

個人覺得圖形界面因為設計得不強, 否則誰不喜歡圖形啊.


GUI里要ping一下網關IP應該怎麼操作?


在win下打開個1~2G的文本,就算用ultraedit也要好久。

在linux下vim完全無壓力。

文本大小上升到40G左右,win下沒試過,linux下vim依舊沒問題。


推薦閱讀:

PowerShell 與 Bash 相比,哪個更好?
如何善加利用 Mac 下的 Terminal ?
DOS的常用命令都有哪些?如何應用?
為什麼命令行界面(CLI)並未隨著命令行操作系統(如 DOS)的淘汰而消亡?
有哪些高效但是不常見的CLI命令?

TAG:Mac | MicrosoftWindows | Unix | 命令行界面CLI | 命令提示符cmd | 終端命令 |