[](https://)# Week 3 Command line
###### tags: `csst`
#### Author : William Mou
---
## What is Command Line?
* Mac

----

----

----

---
* Windows

---
* Ubuntu

---
### Let me seeeee... [CLI Wiki](https://zh.wikipedia.org/wiki/命令行界面)
> 命令列介面?
> 文字介面?
喔,原來是沒有圖的介面(O
---
## So...
>命令行介面 v.s. 圖形化介面
CLI v.s. GUI
都是人類與電腦交流、溝通的介面(Interface)
---
## [Shell](https://zh.wikipedia.org/wiki/殼層)
Shell本身是一個用C語言編寫的程序,
它是用戶使用Unix/Linux的橋梁

###### [中文介紹](https://man.linuxde.net/linux-shell-完全詳解)
---
## 使用方式
* 交互式(Interactive)
* 批處理(batch)
----
```
D = 單眼相機照片
i = 照片流水號
N = Nikon 拍的照片
C = Canon 拍的照片
```
```shell=
# 生成照片
for (( i=1; i<=1000; i=i+1 ))
do
touch D_${i}_N.rwd
touch D_${i}_C.rwd
done
```
```shell=
# 刪除照片
rm *_C.rwd
```
---
## 何時用?
1. 簡單性:Shell是一個高級語言;通過它,你可以簡潔地表達復雜的操作。
2. 可移植性:使用POSIX所定義的功能,可以做到腳本無須修改就可在不同的系統上執行。
3. 開發容易:短時間內完成一個功能強大又妤用的腳本。
---
## 常見的 Shell
* Bash: Linux 標準默認
* sh: Unix 標準默認的shell
* zsh: 上述多種特點集合,但略慢
---
## 常見的指令
```
小技巧:
(tab):自動補齊
(Ctrl+C):取消整句
閱讀文件:
[]:可有可無的值
沒東西:必要的值
```
```
閱讀範例:
指令 [-參數名稱 [參數值]] 輸入檔案
gcc -g -o a.out input.c
```
---
## 常見的指令
```
man 查看指令介紹
whoami 我是誰
pwd 我在哪
ls 列出資料夾下的東西
mkdir 新增資料夾
cd 前往xx資料夾
cp 複製檔案(-f 複製資料夾)
mv 移動檔案與資料夾)
touch 新增一個檔案
cat 列印一整個檔案內容
```
---
## 常見的指令
```
history 查看過去用了哪些指令
su 切換到不同使用者
sudo 提升使用者權限
chomd 改變資料權限
ip a 顯示網卡
ifconfig (如果你沒有 ip a)
traceroute 顯示經過的路由
ping 看看對方電腦網路還活著ㄇ
df -h 整台電腦有多少硬碟、空間資料
du -h 當前資料夾下有多少檔案、多大(-d 1 向下一層)
```
---
## 套件管理
### What???

---
## 常見ㄉ套件管理
```
Mac : brew install tmux
Ubuntu : apt-get install tmux
CentOS : yum install tmux
Arch : pacman -y tmux
```
---
## 常見的工具
```
tmux:視窗管理工具。類似 Windows 放大縮小切換等。
htop: CPU 使用量。類似 Windows 工作管理員
vim:編輯器。類似 Windows 記事本、VScode。
nano:同上,較易學。
git:套件管理工具。 Windows 應該沒類似。
tree:樹狀列出資料夾下的東西。類似 Windows 的檔案管理。
gcc(clang):C 語言編譯器。
wget:從網站上下載檔案。類似 Windows 的右鍵下載。
ssh:遠端連線工具,類似文字版的 Teamviwer。
docker:一種容器引擎,暫時可以想想成輕量級的 VM (虛擬機)。
```
---
## 更多你想知道ㄉ:
Linux 系統介紹:https://chusiang.gitbooks.io/working-on-gnu-linux/
Shell Script介紹:http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#test_2
---
## VS Code 介紹
### c/c++ setup
{"metaMigratedAt":"2023-06-15T01:38:32.326Z","metaMigratedFrom":"Content","title":"Week 3 Command line","breaks":true,"contributors":"[{\"id\":\"7852a99d-c463-4348-8b6b-b749d5026301\",\"add\":3416,\"del\":350},{\"id\":\"ae8aa25a-c6b5-4abe-b640-bf6cea63c810\",\"add\":2,\"del\":2},{\"id\":\"159f4b92-ada9-4698-8b5a-7f097d0cb0cd\",\"add\":36,\"del\":0},{\"id\":\"a361b896-dc40-4eef-9088-308a7a08db19\",\"add\":12,\"del\":0,\"latestUpdatedAt\":1762481255920}]"}