破除迷思系列:用Command Line 的都是Hacker?

Gordon Lau

Gordon Lau

2018-11-13

大家如果有Programmer 的朋友,你應該早就發現他們使用的軟件與平常電腦使用者很不同,其中最引人注目的就是一個黑底淺色字、無任何圖案的軟件,而你的Programmer 朋友在上面飛速打字,然後密密麻麻的文字就慢慢向上褪出螢幕,大家總會忍唔住補上一句:「嘩!好似Matrix啊!」 或者「你係Hacker嚟架?」

matrix.webp

https://www.indiewire.com/2017/10/the-matrix-code-digital-rain-meaning-1201891684/

這個軟件其實是Command Line Interface(命令列介面),,簡稱CLI。大家常用的界面是Graphical User Interface(圖形使用者介面),簡稱GUI。問題來了,為何時至2018年,在touchscreen都已經廣為使用的年代,programmers 還會使用CLI呢?

CLI同GUI 兩者本質上皆是為了向電腦下達命令,因而需要一個人機界面(Human-Computer-interface)而成的,CLI 出現年份較早,早於電腦出現初期已經發明。GUI 則約於上世紀八十年代開始廣泛使用。 使用難度方面,GUI 非常直覺好用:君不見現在五歲小孩用iphone比大人還熟手嗎?

windows_8.webp

https://www.guitricks.com/2015/07/how-to-download-or-get-windows-10.html

使用難度方面,CLI 則需要重新學習,很多我們的同學第一次使用CLI 都會有手足無措的感覺。但熟練的CLI使用者用起來卻如自然反應一樣。

command_line.png

https://upload.wikimedia.org/wikipedia/commons/2/29/Linux_command-line._Bash._GNOME_Terminal._screenshot.png

箇中原因,其實在於GUI 其實是以圖案為基礎的使用者介面,CLI卻是以文字為基礎的使用者介面。 常言道:「一幅圖勝過千言萬語」,那麼使用GUI 一定比CLI方便敏捷吧? 其實不然。 圖案長於展示(Demonstration)的場合,拙於描述(Description)的場合; 相反文字長於描述,拙於展示。 試比較以下兩件事用文字或圖案的解答難度:

  1. 找出Tecky Academy 在香港地圖上的位置
  2. 由你的家往Tecky Academy 去,在Tecky Academy 上課兩小時,再完成兩個作業題目,六點正再由回家去

圖案解答

顯而易見的是,要解答 1. ,貼Google Map就可以了。

tecky_location.png

2. 則明顯困難得多,由你家往Tecky Academy 可以用路線代替,那如何要圖案表達「上課兩小時」呢? 就顯然不是那麼簡單了。

文字解答

相反文字在解答 1. 則是非常困難,可能要以在「有線電視大廈旁」等的提示才能準確表達海盛路11號到底是在那兒。 而2. 的解答,本身就是文 字啦。

GUI vs CLI

電腦方面亦有一樣的現象,要展示一個資料夾裏面有甚麼,使用檔案管理員的Tree view 就方便不過了。

window_explorer.png

https://www.howtogeek.com/262240/how-to-show-the-control-panel-and-recycle-bin-in-the-windows-file-explorer-navigation-pane/

但想像一下你有一堆檔案要重新改名,要由原本以tecky 開頭改為以teckyAcademy開頭

split_result.png

用GUI 的話,不使用額外的工具的話,需要逐一改名,有一百個檔案,就要自己改一百次。 但是使用CLI的話, 只需要打以下這段command 就一舉完成了。

find . -iname "tecky*" | awk -F'[/_]' '{print "mv",$1"/tecky_"$3,$1"/teckyAcademy_"$3}' | sh

當然大家如果未學過Command line的話,此段文字基本上是外星語言。但由描述的角度看,卻完全一步一步解釋了做甚麼: 1. 找出所有以Tecky 開頭的檔案 2. 將檔案名一一拆開,例如./tecky_1.txt 拆出 tecky ,然後將tecky 以teckyAcademy取代。 3. 砌出很多句 改名的command,然後逐一運行。

總結

Programmer 工作中經常會遇到如上面一類大量描述的任務,如以GUI一一解決的話,除非安裝額外軟件,不然會相當費時失事。因此,很多Programmer都練就了一身良好的command line 技術,當遇到此類問題,自然迎刃而解。 而 Programming本身,每一行代碼也是對電腦描述想做的命令,因此就更需要大量的keyword或 method call 了。

講開又講, 雖然其實真正的Hacker都一定會是Command Line高手的,所以其實不知道你的programmer朋友是否真正的hacker 哦!

Comments

Read More

四個原因令Linux更適合作Server

破除迷思系列:Programmer 做到三十歲就要轉行?

破除迷思系列:用Command Line 的都是Hacker?