# Command Line 入門筆記 ## 什麼是 Comamand Line Command Line 通常被稱為 **命令行** 或 **命令行介面(Command Line Interface,CLI)**,相較於圖形使用者介面(Graphical User Interface,GUI),這是一個以文字為主的應用程式,可以單純使用文字指令來對電腦進行操作。 ## 為什麼要學 Comamand Line * **~~因為可以模仿駭客耍酷~~** * **因為方便又快速** 某些時候直接對電腦下指令比操作 GUI 介面來的更加便捷,更別說使用者可能還得先熟悉圖形介面該如何操作。 比如我想把 downloads 資料夾以及資料夾內的所有檔案都刪除,通常我們會找到該資料夾 -> delete 或滑鼠右鍵刪除;而使用 Command Line 只需要下一行`rm -r downloads`就解決了。若在難以用肉眼找到目標資料夾的情況下(ex. 資料夾太多),使用 GLI 的效率更是顯而易見。 * **因為沒有 GUI 可以使用** 在安裝特定程式套件或操作 Server 時,就可能會需要使用 CLI 來進行。 ## 常用基礎指令 以下介紹一些在使用 Command Line 時,較常使用到的基礎指令。 因為我使用的是 Windows 系統,因此以 [Git-Bash](https://git-scm.com/) 在 Windows 上的操作指令為主。 | 指令 | 作用 | 完整名稱 | 用法 | | -------- | -------- | -------- | -------- | | pwd | 印出目前所在位置 | print working directory | | | cd | 切換資料夾 | change directory | `cd 同層其它資料夾名稱`<br>`cd 絕對路徑`<br>`cd ..` 回到上一層<br>`cd /` 移動到根目錄 | | ls | 列出現在位置所有檔案 | list | `ls -a` 列出隱藏檔案<br>`ls -l` 列出詳細資訊<br>`ls -al` 列出所有檔案包括詳細資訊 | | clear | 清空畫面 | | | | touch | 建立 / 修改檔案 | | 檔案不存在則建立檔案;檔案存在則更改最後修改時間 | | rm | 刪除 | remove | `rm -r` 刪除資料夾<br>`rm -f` 強制刪除 | | rmdir | 刪除資料夾 | | 僅能刪除空資料夾 | | mkdir | 建立資料夾 | make directory | | | mv | 移動檔案或改名 | move | `mv 檔名 路徑位置`<br>`mv 原檔名 新檔名` | | help | 指令使用說明 | | `指令 --help` 如 `mv --help` | | vim | 文字編輯器 | | `i `進入 insert 編輯模式<br>`esc` 結束 insert 模式<br>`:q` quit 退出<br>`:w` write 存檔<br>`:wq` 存檔並退出 | | cat | 連接檔案<br>顯示檔案內容 | catenate | | | less | 分頁式顯示檔案內容 | | `q` 退出檢視模式 | | grep | 抓取關鍵字 | global regular expression print | `grep 關鍵字串 檔案名稱` | | curl | 存取網路資源<br>進行 HTTP Request | command line URL | [curl command 指令](https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/) | | date | 現在時間 | | | | echo | 印出字串 | | | | > | 重新導向 | redirection | `內容 > 檔名` 會覆蓋原內容<br>新增內容但不覆蓋可用 `>>`(append)| | `|` | 組合指令 | pipe | 左邊指令的輸出等於右邊指令的輸入。可以想成先執行完左邊指令得到一個結果,在將此結果丟入右邊指令中執行。 | ## Windows 內建似乎無法使用這些指令 因為我使用 Windows 無法實作這些指令,所以暫時將他們歸類在這個標題內。 | 指令 | 作用 | 完整名稱 | 用法 | | -------- | -------- | -------- | -------- | | man | 指令使用說明 | manual | `man 指令名稱` | | cp | 複製檔案 | copy | `cp 欲複製檔名 複製後檔案的檔名`<br>對資料夾操作一樣加上 `-r` | | wget | 下載檔案(非內建,需安裝) | | `wget 位址`<br>可用 `open` 或 `cat` 檢視下載好的檔案 | ## 補充 上課前一直以為 Git-Bash 和 Windows 內建的 CMD 會是差不多的東西,用著用著才發現,咦?原來他們使用的是不同系統的語法。 > Git Bash 是 Windows 版的 Git 模擬器,可使用 Linux 指令操作 Window 的檔案系統。 > 參考自 小狐狸事務所 - [Git 學習筆記 (二) : Git Bash 基本操作](http://yhhuang1966.blogspot.com/2020/01/git-git-bash.html) 查了資料才發現他是基於 **Linux** 指令去操作的,所以和 Windows 指令還是有些不同,詳細內容可以參考引文連結。另外,在 [ss64.com](https://ss64.com/) 可以查到各個作業系統的 Command Line 指令。 因為不了解作業系統,也先找了篇 [Linux 自學分享文章](https://ithelp.ithome.com.tw/articles/10210448),之後有空可以來研究研究。 ## 參考資料 1. [維基百科 - Cat(Unix)](https://zh.wikipedia.org/wiki/Cat_(Unix)) 2. [Linux Command 命令列指令與基本操作入門教學](https://blog.techbridge.cc/2017/12/23/linux-commnd-line-tutorial/) 3. [Linux Curl Command 指令與基本操作入門教學](https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/) 4. [Command Line 命令行簡介](https://carolhsu.gitbooks.io/django-girls-tutorial-traditional-chiness/content/intro_to_command_line/README.html) 5. [Git 學習筆記 (二) : Git Bash 基本操作](http://yhhuang1966.blogspot.com/2020/01/git-git-bash.html) 6. [Linux 命令大全 - grep 命令](https://man.linuxde.net/grep) 7. [Lidemy【CMD101】Command Line 超新手入門](https://www.lidemy.com/) ###### tags: `導師實驗計畫第四期` `網頁前端` `Command Line` `CLI`