# Command Line 簡介與語法整理 題目出自 [Lidemy 程式導師實驗計畫第四期](https://bootcamp.lidemy.com/) 第一周 hw 3:教你朋友 CLI ###### tags: `CLI` ## 教你朋友 CLI > 學了一項東西之後若是想驗證自己是不是真的懂,教別人是最快的方法。 > > 有天,你的麻吉 h0w 哥跑來找你說:「欸!能不能教我 command line 到底是什麼,然後怎麼用啊?我想用 command line 建立一個叫做 wifi 的資料夾,並且在裡面建立一個叫 afu.js 的檔案。就交給你了,教學寫好記得傳給我,ㄅㄅ」 > > 可...可惡,居然這樣子就跑走了。但因為他是你的麻吉,所以你也沒辦法拒絕。 > > 因此這個作業要請你寫一篇簡短的文章,試圖教會 h0w 哥什麼是 command line 以及如何使用,並且要教他如何達成他想要的功能。 ### What? CLI 是什麼?如果你喜歡看科幻電影,是不是有一些電腦高手打開電腦都是一片黑黑的介面,然後他手指飛快地在黑黑的介面打下一大推嚇人的符號,然後 "蹦!" 就成功破解敵人電腦之類的,這個就是你想學的 CLI ! CLI 全名你剛剛也有提到,叫做 Command Line Interface ,中文是**命令列介面**(算了,當我沒說,有時候翻成中文越講越奇怪 XD),說穿了其實他就是最古老跟電腦說話的方式。 既然有古老就有現代,你現在跟電腦溝通是不是都是用滑鼠左鍵右鍵在螢幕上點來點去,這個是 Graphical User Interface ,縮寫 GUI ,中文是**圖形用戶介面**,是圖像的介面,也就是一個一個圖案組成的介面,好處是對人類來說比較直覺,大家比較能學得會。 ### Why? Q:「那為什麼攻城屍們還是要用 CLI 跟靛瑙溝通呢?真的只是追求比較潮嗎?」 A:「有聽過知己知彼,百戰百勝嗎?雖然 GUI 對愚蠢的人類來說比較直覺,可是對靛瑙來說反而要多一層的翻譯。 CLI 才是最原始直接的溝通方式,需要大量跟她溝通的攻城屍們,當然要用她的語言跟她說話啊! 你可以把靛瑙想成一個羅馬時代的女孩子,她的母語是拉丁文,不過經過學習,她現在也可以說當代英文了。因為大部分的人跟她來往不深,談話用英文就足以應付,可是對攻城屍們來說,學習拉丁文才可以更了解她、跟她說更多深入的話題 (?),更重要的是溝通速度更快!」 最後送你一句曼德拉先生的名言: > If you talk to a man in a language he understands, that goes to his head. If you talk to him in his language, that goes to his heart. (如果你用一個人聽得懂的語言與他交流,他會記在腦子裡;如果你用他自己的語言與他交流,他會記在心裡。) | | CLI | GUI | | -------------- | -------------------------------------- | ------------------------ | | 全名 | Command Line Interface | Graphical User Interface | | 中文 | 命令列介面 | 圖形用戶介面 | | 和電腦溝通方式 | 用 Command Line 指令(命令)溝通 | 用 Graphic 圖像介面溝通 | | 額外配備 | 一鍵 (盤) 在手希望無窮 | 滑鼠或觸控板 | | 優點 | 看起來潮!<br />能做更多事、更快更方便 | 愚蠢人類比較好懂好學 | ### How? 看來你已經迫不及待想要學習拉丁文 (Command line) 來跟靛瑙交流了,這邊我先教你最簡單的幾句就好,就像你到國外,只要先學會用當地語言說:你好、謝謝、再見,大家對你的態度就會完全不一樣了!那麼在開始交流之前,我們要先把環境準備好,環境好、氣氛佳的前提下,靛瑙小姐才會跟你用拉丁文交流。 這邊要注意的是,環境可以用很多種,window 最常看到的系統管理員 cmd 就是其中一種。那麼今天我們要用的是另一種叫做 git bash ,Git Bash 是 Windows 版的 Git 模擬器, 可使用 Linux 指令操作 Window 的檔案系統。先在網路上下載 git ([載點](https://git-scm.com/download/win)),接著打開 git 裡面的 git bash,看到一團黑摸摸的介面就代表環境就準備好囉! 下面表格會介紹幾個最基本的指令給你: | 你要去哪裡類 | | | ----------------------------------------------------------- | ------------------------------------------------- | | `pwd` - Print Working Directory (資料夾) | 我在哪裡? | | `ls` - List<br />`ls -al`(a = 全部,l = long list format) | 我有什麼?<br />更詳細資料 | | `cd <directory name>` - Change Directory<br />`cd .. ` | 我要去哪裡? !只能是上下層關係!<br />回到上一層 | | `touch <file name>`<br />`mkdir <folder name>` | 新建檔案<br />新建資料夾 | | 你要做什麼類 | | | ------------------------------------------------------------ | ---------------------------------------- | | `touch <file name>`<br />`mkdir <folder name>` | 新建檔案<br />新建資料夾 | | `rm <file name>`- Remove<br />`rmdir <folder name>`<br />`rm -rf` (r = 全部,f = 強制) | 移除檔案<br />移除資料夾<br />強制刪全部 | | `cat <file name>` | 看看裡面長什麼樣子? 印出檔案內容 | | `vim <file name>` | 大鬧天宮胡亂改? 其實就是文字編輯器辣 | 所以根據你的要求:「我想用 command line 建立一個叫做 wifi 的資料夾,並且在裡面建立一個叫 afu.js 的檔案。」大概可以分成以下兩個步驟: 1. 先到要新建資料夾的地方 把`你要去哪裡類`的指令交互使用,包含`pwd、ls、cd` 2. 開始動作 ​ `mkdir "wifi"`=> 建立一個叫做 wifi 的資料夾 ​ `cd wifi` => 移動到 wifi 資料夾 ​ `touch afu.js` => 建立一個叫 afu.js 的檔案