Skip to main content

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

· 6 min read
戈頓
Developer & Co-founder of Tecky Academy

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

Matrix

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

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

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

Command Line

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

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

文字解答

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

GUI vs CLI

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

Window Explorer

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

用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 哦!