---
# System prepended metadata

title: Command Line 入門筆記
tags: [Command Line, CLI, 網頁前端, 導師實驗計畫第四期]

---

# 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`