# [CS101] 初心者的計概與 coding 火球術 2-1 ~ 2-4 : CLI介紹 ###### tags: `Lidemy`,`CLI` ## 2-1:什麼是 command line? * 用「圖形介面」來溝通 --> Graphical User Interface (GUI) * 用「文字」來溝通 --> Command Line Interface (CLI) > **Command Line Interface (CLI)** > **在Mac** : Terminal.app 終端機 > **在Windows** : cmd.exe 命令提示字元 * 關於 Linux 指令可以參考: [鳥哥的 Linux 私房菜 - Linux 基本指令介紹](http://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php) <br> :::info :bulb: **[JSLinux](https://bellard.org/jslinux/)** :bulb: **[Javascript PC Emulator](https://jslinux.org/)** JSLinux 是由 Fabrice Bellard 用 JavaScript 所寫的模擬器,可以在 Web 瀏覽器中啟動 Linux 環境。 ::: <br> <br> ## 2-2:基本指令練習,用文字來操作檔案吧! :bulb: [Unix 與 MS-DOS 指令對照表](https://github.com/shyangs/blog/issues/8) ### pwd * **`pwd`** (print working directory) 印出所在位置 <br> ### ls * **`ls`** (list Segment) 列出目前所在資料夾的檔案清單 * **`ls -a`** 列出目前所在資料夾的隱藏檔案列表 * **`ls -l`** 使用長格式 (long format) 列出目前所在資料夾的 ***詳細*** 檔案列表 * **`ls -al`** 列出目前所在資料夾的 ***詳細*** 檔案清單 (包含隱藏檔案)。列出的項目除了檔名,還有權限、擁有者、檔案大小、最後修改日期時間 <br> ### cd * **`cd`** (change directory) 切換資料夾 * **`cd ..`** 回到上一層資料夾位置 * **`cd ~`** 預設 /Users/XXX 資料夾位置 * **`cd /`** 根目錄 :::info :bulb: 輸入資料夾名稱時,可善用tab鍵,只要打出開頭幾個字母,就會自動補齊完整資料夾名稱。 ::: <br> ### touch * **`touch + 檔名`** 檔案不存在時: 建立新檔案 檔案存在時: 更改檔案時間為目前時間 <br> ### mkdir * **`mkdir`** (make directory) 建立資料夾 <br> ### rm * **`rm`** (remove) 刪除檔案 * **`rmdir`** (remove directory) 刪除資料夾 * **`rm -r`** & **`rm -R`** (remove root) 刪除資料夾(及底下所有檔案) * **`rm -f`** (remove forcely) 強制移除 :pushpin: ==小心使用== <br> ### cp * **`cp`** (copy) 複製檔案 * **`cp 檔名 不存在的檔名`** 複製檔案成為新的檔案 * **`cp -r 資料夾 不存在的資料夾`** 複製檔案成為新的資料夾 <br> ### mv * **`mv`** (move) 移動檔案或是改名 * **`mv 檔名 已存在的資料夾`** 移動檔案至某資料夾 * **`mv 檔名 ..`** 移動檔案至上一層資料夾 * **`mv 檔名 不存在的檔名`** 更改檔案名稱 <br> ### man :pushpin: ==這個指令 windows 不支援== :pushpin: 可改用 `help` 代替部分功能。或是在指令後方加`--help` 可以得到更詳盡的功能說明。 * **`man`** (manual) 指令使用手冊 * **`clear`** (clear) 畫面清除 * **`q`** (quit) 離開 <br> <br> ## 2-3:更多常用 command line 指令 ### date * **`date`** 印出現在時間 <br> ### top * **`top`** (Table of Processes) 印出所有的 process * **`q`** (quit) 離開 <br> ### cat * **`cat`** (catenate) 連接檔案 * **`cat 檔名`** 將檔案內容列出 <br> ### less * **`less 檔名`** 分頁式印出檔案內容 (可用上下鍵分頁瀏覽檔案) * **`q`** (quit) 離開 <br> ### grep * **`grep`** 抓取特定關鍵字 * **`grep 關鍵字 檔名`** 抓取某檔案中含有關鍵字的段落 <br> ### echo * **`echo 字串`** 印出字串 <br> <br> ## 2-4:發揮更大的力量--指令的組合技 ### pipe * **`|`** 串接指令。把左邊指令的輸出,變成右邊指令的輸入 <br> ### redirection * **`>`** 重新導向 input output * **`>>`** 重新導向 input output * **`ls -al > list_result`** 將詳細列表輸出到檔名為 list_result的檔案中,並覆蓋掉原先的內容 * **`ls -al >> list_result`** 將詳細列表輸出到檔名為 list_result的檔案中,加在原先的內容後面