bash (Linux 預設)、zsh、fish、csh/tcsh、ksh、dash。| 類別 | 字元 | 說明 |
|---|---|---|
| 轉義字元 | < > | ; & ! ? * [ ] $ \ " ' ` ~ ( ) { } ^ # | Shell 賦予特殊含義 |
| 例 | count=`ls -l | grep '^d' | wc -l` | 反引號命令置換 |
| 萬用字元 | ? * [range] [!range] | 檔名模式比對 |
| 例 | ls file[1-10].c | 列出 file1.c ~ file10.c |
Tab 自動補全:路徑、指令、變數名稱雙擊 Tab 即可補全,極大提升效率。
< (輸入)、> (覆蓋輸出)、>> (追加輸出)、2> (錯誤輸出)、&> (合併輸出)。|:前命令 STDOUT → 後命令 STDIN。grep, sed, awk, tr, sort, uniq, wc, cut。var="value" (無空格)、echo $var、unset var。$ ` \、反斜線 \ 轉義單一字元。$? (上一指令退出碼)、$$ (當前 PID)、$# (參數個數)、$@ (所有參數列表)。export VAR=value 導出給子行程。關鍵變數:PATH, HOME, LANG, PS1/PS2, SHELL, TERM。cmd1; cmd2; cmd3 # 同一行循序執行 cmd1 \ # 反斜線換行續輸入 cmd2 \ cmd3
Makefile 定義目標、相依、指令,實現增量建構:
target: prerequisites recipe (must start with Tab) # 範例:C 專案 CC=gcc CFLAGS=-Wall -O2 OBJS=main.o utils.o app: $(OBJS) $(CC) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f *.o app
$@ 目標、$^ 所有相依、$< 第一個相依。make -j4 平行建構;make -n 演練模式 (不執行)。