---
# System prepended metadata

title: Command Line 指令
tags: [CML, Command Line]

---

#  Command Line 指令
> [Learning note]
###### tags: `CML` `Command Line`

## 基本指令
* **pwd**：印出所在的位置(路徑)
* **ls**：印出現在資料夾底下的檔案
* **cd**：切換資料夾
    **cd ..**：回上一頁（回上一層）
    **cd 資料夾路徑**：進入到資料夾
    **cd ~**：回一開始的路徑， **~** 作業系統幫使用者開的資料夾，跟你有關的東西全都在裡面
* **clear**：將畫面清空
* **man**：使用說明書（Git Bash沒有內建此功能）
## 檔案與資料夾相關指令
* **touch**：建立檔案與更改時間
    1. 建立hello.txt檔案（沒這個檔案的前提）：
    **touch hello.txt**
    2. 更改hello.txt檔案時間為現在的時間（原本就有此檔案）:
    **touch hello.txt**
* **rm**：刪除檔案
    **rm hello.txt**：刪除 hello.txt 檔案
* **mkdir**：新增資料夾
    **mkdir test**：新增 test 資料夾
* **rmdir**：刪除資料夾
    **rmdir test**：刪除 test 資料夾，如果沒有這個指令（或裡面有檔案）使用下一個方法
    **rm -r test**：刪除 test 資料夾，包含此資料夾內的所有檔案都刪除
    ***再刪除前務必再次確認是否確定要刪除***
    
> **在進入資料夾、刪除檔案、新增（刪除）資料夾輸入名稱時，打完開頭幾個字按下 tab 會自動幫你輸入完成，就不需要全部名稱打完**

* **mv**：移動檔案與改名
    1. 將 pig.txt 移動到 test 資料夾內：
    **mv pig.txt test**
    2. 將 pig.txt 移動到上一層：
    **mv pig.txt ..** ( 這邊要少一個 . )
    3. 將 pig.txt 改名為 hello：
    **mv pig.txt hello**

> 移動檔案有絕對路徑和相對路徑
> 絕對路徑：/c/Users/bngandan 開頭有 **/** 符號
> **mv pig /e/new**：將 pig 移動到 E 槽 new 資料夾內 
> 相對路徑：我目前在這個位置資料夾
> **mv pig test**：將 pig 移動到 test 資料夾內

* **cp**：複製檔案
    **cp pig apple**：複製 pig 檔名改為 apple（這個位置會有兩個檔案 pig、apple）
* **cp -r test1 test2**：複製資料夾，複製 test1 資料夾 改名為 test2（這個位置會有兩個資料夾 test1、test2）
## vim 文字編輯器
* **vim hello**：進入 hello 編輯內容，會跑出一個頁面（vim 也可用 vi 後面接要編輯的檔案名稱）
* **i**：進入 INSERT 模式，才可開始輸入
* **ESC**：進入 普通 模式，可以刪除、複製、貼上，但就是不能輸入文字
* **:q**：按 Enter ，離開文字編輯器（在 WIN 如有編輯檔案，此功能無法退出；在 MAC 會問是否要儲存檔案 是、否、取消）
* **:wq**：按 Enter ，存檔並離開文字編輯器

※有些人會直接使用 vim 文字編輯器，來進行程式撰寫
## 其他好用指令
* **cat**：印出檔案內容
    **cat hello**：印出 hello 檔案內容
* **grep**：抓取關鍵字
    **grep h hello**：抓取 hello 這個檔案裡面有 h 的那幾行，並且印出
* **wget**：下載檔案，必須額外下載
    **wget 圖片位址**：就能夠下載那個位址的圖片
* **start**：Window 用戶開啟檔案
    **start hello**：開啟 hello 檔案
* **curl**：送出 request（未來比較會用到，暫時不會用到）
* **ls -al**：查看權限
## 指令的組合技：pipe 與 redirection
* **>**：redirection 重新導向 input output
    **echo "123" > pig.txt**：將 pig.txt 內容全部清除，放入 123
    **cat pig.txt >> hello.txt**：將 pig.txt 內容新增至 hello.txt後面（不會清除）
* **|**：串接指令，將左邊的輸出，變成右邊的輸入
    **cat pig.txt | grep o**：將 pig.txt 內容，交給 grep 抓取有 o 的那幾行，並且印出

