---
# System prepended metadata

title: '[CMD101] Command Line 超新手入門(筆記)'
tags: ['[CMD101] Command Line 超新手入門', Lidemy學院]

---

# [CMD101] Command Line 超新手入門(筆記)
###### tags: `Lidemy學院` `[CMD101] Command Line 超新手入門`
## Command Line 是什麼？
另外一種操作電腦的方法，基本上可以將電腦操作分成兩種，一種是圖形化介面GUI(Graphical User Interface)，就是現在電腦的使用方式，點點桌面上的圖案就能操作電腦，如沒有這樣的介面，那如何跟電腦溝通，就會用文字的視窗，這文字的視窗就叫CLI(Command Line Interface)
___
## 環境設置
Windows（git-bash），想要在 Windows 上面執行 command line 指令，推薦先安裝 git-bash 這個東西，安裝方式很簡單，只要到 [Git 官網](https://git-scm.com/)，右邊的 Download 點下去，然後安裝的時候一直下一步就行了。
___
## 最基本的四個指令
### pwd：我在哪裡？
```
//Print Working Directory(印出所在位置)
pwd
```
### ls：列出檔案清單
```
//LiSt(印出現在資料夾下檔案)
//有些指令後面，還能加參數
ls
ls -al   //印出更多詳細內容
```
### cd：我要帶你到處去飛翔
```
//Change Directory(切換資料夾)
cd 子目錄
cd .. //回到上一層
cd ~  //回到home目錄 
cd /  //回到根目錄

clear //清光畫面
exit  //關閉Terminal
```
### man：指令使用手冊
```
//MANual(使用說明書)
man 指令 //後面加指令，查詢指令用法
```
> 補充：
在 Windows 上面的話是沒有這個指令可以用的喔，會出現指令不存在的錯誤
___
## 檔案操作相關指令
### touch：建立檔案與更改檔案時間
```
//touch(建立檔案或是更改時間)
touch 檔名
```
### rm：把你刪光光
```
//ReMove(刪除檔案)
rm 檔名
rm -rf         //刪除整個檔案或整個資料夾
rmdir 資料夾名稱 //刪除空資料夾
```
### mkdir：建立資料夾
```
//MaKe DIRectory(建立資料夾)
mkdir 資料夾名稱
```
### mv：移動檔案或是改名
```
//MoVe(移動檔案或是改名)
mv 檔名 新檔名  //改名
mv 檔名 路徑    //路徑，相對路徑或絕對路徑
mv 檔名 ..     //移動到上一層
```
### cp：複製人大戰
```
//CoPy(複製檔案)
cp 檔名 新檔名               //複製檔案
cp -r 原資料夾名稱 新資料名稱  //複製資料夾
```
___
## 把你困在裡面一輩子的編輯器：Vim
```
//vim(文字編輯器)

vim 檔名

//按i 進入編輯模式
//按esc 進入普通模式
:q 退出
:wq 存檔後退出
:q! 不存檔直接退出

cat 檔名 //由第一行開始顯示檔案內容
```
> [鳥哥的Linux 私房菜 — 第九章、vim 程式編輯器](http://linux.vbird.org/linux_basic/0220filemanager.php)
___
## 其他好用指令
### grep：抓到你囉！
```
//grep(抓取關鍵字)
grep 字串 檔名
```
### wget：下載檔案
> 不是每台電腦都有的指令，可以透過 [Homebrew](https://brew.sh/index_zh-tw) 進行安裝。
> 安裝指令：brew install wget
> 寫法： wget 圖片網址
> 補充：在 Windows 上面的話是沒有這個指令可以用的，為macOS的套件
### curl：送出 request
```
//curl(送出 request)
curl 網址
curl -I 網址 //擷取 request header
```
> 現在不太會用到，待往後串接 api 可以用來做測試。
___
## 指令的組合技：pipe 與 redirection
### redirection：去哪都由我決定
```
//redirection(重新導向 inpur output)
//redirect：>
//說明：此方式檔案原內容會被新增的內容將全部覆蓋掉，若要避免可使用 >>
ls -al > 檔名
echo "text" > 檔名
```
### pipe：指令的組合技
```
//pipe(串接指令)
//pipe：｜
//把「前面指令的輸出」變成「後面的輸入」
例如 : cat 123.txt | grep 字串
例如 : cat 123.txt | grep 字串 > 456.txt
```
___
> [Command Line 基本指令與操作](https://miahsuwork.medium.com/%E7%AC%AC%E4%B8%80%E9%80%B1-command-line-%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4%E8%88%87%E6%93%8D%E4%BD%9C-f4da8bcfdfa)
