# 那些我希望能早點知道的事2
## 談談Command Line
靜心高中創客社 侯以樂
[簡報連結](https://slides.com/hhe1ibeb/deck-529d8a)
---
## 什麼是Command Line?
回想一下你看過的駭客電影,程式高手都會在一個黑黑的框框打一堆觀眾看不懂的英文,按下enter後就會跑出更多看不懂的東西。
Command Line 就是我們和電腦進行溝通的方式。
----
Command Line (命令行) 是一個純文字的應用程式,可以查看、處理電腦中的檔案。
----
### GUI vs. CLI
GUI(Graphical User Interface)圖形使用者介面 - 我們平常用滑鼠點點點的
CLI(Command Line Interface)命令列介面 - 其實是GUI背後在運作的東西
#### 為什麼不用好用的GUI要用難懂的CLI?
1. 有些時候CLI可以更快達成目的
2. 有些功能只能靠CLI達成
---
## 打開Command Line
Windows: 搜尋cmd
MacOS: 打開terminal app
----
說到這裡,打個廣告
如果你是Mac使用者
非常推薦你們用這個Terminal - [Warp](https://app.warp.dev/referral/3D436V)
[
](https://app.warp.dev/referral/3D436V)
---
## 基本指令
### whoami(Who am I)
* 告訴你你是誰
* 就是檢視你的用戶名稱

### ls(list)
* 列出所有檔案和路徑

#### 一些小小的變化型
1. 列出隱藏的目錄:`ls -a`
2. 列出詳細資料:`ls -l`
3. 包上述兩個:`ls -la`
4. 列出 .js 的檔案:`ls *.js`
### pwd(print working directory)
* 告訴你你在哪
* 顯示目前路徑

### cd(change directory)
* 切換目錄
* 寫法: `cd [目標]`

#### 一些小小的變化型
1. 回到 home 目錄:`cd ~` # 屬於使用者底下的資料夾
2. 回到根目錄:`cd /` # 電腦最底層
3. 回到上一層資料夾:`cd ..`
#### 小訣竅
1. 當輸入 cd + 空格 時,按 tab 會幫你自動列出底下的資料夾列表 (=輸入 ls)
2. 輸入前幾個字母,再按 tab 會幫你自動補完資料夾名稱
### clear
* 字面上的意思:清空
### exit
* 關閉 Terminal
## 檔案操作
### mkdir(make directory)
* 建一個新的資料夾
* 寫法:`mkdir [資料夾名稱]`
* ex: `mkdir waaa`

### rm (remove)
* 刪除檔案
:::warning
這邊的刪除是直接刪除,也就是不會進到垃圾桶中,請小心使用!!!
:::
#### 變化型:
1. `rmdir` (remove directory):刪除空資料夾,若資料夾內有檔案就無法刪除
2. `rm -rf` :刪除整個檔案或整個資料夾
#### 小訣竅
* 當刪除的檔名有空格或特殊字元時可使用單引號將檔名括起來: `rm '檔名'`。
### mv(move)
#### 作用一:移動檔案
* 寫法:`mv [檔名] [路徑]`
##### 相對路徑和絕對路徑
* 相對路徑:mv file folder #以 desktop 為 home 目錄。
* 絕對路徑:mv file /Users/miahsu/desktop
* 檔案移動到上一層,就必須使用絕對路徑的寫法
#### 作用二:改檔名
* 寫法:`mv [原檔名] [新檔名]`
### touch
* 碰一下檔案
* 寫法:`touch [檔名]`
* 如果檔案不存在:建立一個新的檔案。
* 如果檔案存在:更改檔案修改時間。
### cp(copy)
* 複製檔案
* ex: `cp file01 file01_copy`
### echo
* 印出字串
### cat(catenate)
* 顯示檔案內容
### grep
* 抓取特定關鍵字,並高亮顯示(有分大小寫)。
* 寫法:`grep 字串 檔名`
* ex: `grep a test2.txt`
### wget
* 下載檔案至當前目錄。
:::warning
不是每台電腦都有的指令,可以透過 Homebrew 進行安裝
:::
* 安裝指令:`brew install wget`
* 寫法: `wget [圖片網址]`
## 小挑戰
1. 建立一個資料夾 data
2. 建立一個檔案,存在 /data/test.txt
3. 建立一個資料夾 copy
4. 複製上面 test.txt 的檔案,存在 /data/copy/test2.txt
5. 刪除 copy 資料夾
{"title":"Command Line","description":"靜心高中創客社 ㄏㄡ","contributors":"[{\"id\":\"638984a0-bb88-47ff-a6ff-183ffa3fdfdd\",\"add\":3127,\"del\":683}]"}