萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦入門

Linux Shell 與 Make 進階應用:從基礎語法到建構自動化

一、Shell 核心觀念

1.1 什麼是 Shell?

  • 使用者與核心 (Kernel) 的介面 / 命令解譯器。
  • 支援多使用者、多任務 (前景/背景)、複雜程式設計語言 (變數、流程控制、函式)。
  • 常見 Shell:bash (Linux 預設)、zsh、fish、csh/tcsh、ksh、dash。

1.2 轉義字元與萬用字元

類別字元說明
轉義字元< > | ; & ! ? * [ ] $ \ " ' ` ~ ( ) { } ^ #Shell 賦予特殊含義
例count=`ls -l | grep '^d' | wc -l`反引號命令置換
萬用字元? * [range] [!range]檔名模式比對
例ls file[1-10].c列出 file1.c ~ file10.c

Tab 自動補全:路徑、指令、變數名稱雙擊 Tab 即可補全,極大提升效率。

1.3 I/O 重導向與管線

  • 三大標準流:STDIN (0)、STDOUT (1)、STDERR (2)。
  • 重導向運算子:< (輸入)、> (覆蓋輸出)、>> (追加輸出)、2> (錯誤輸出)、&> (合併輸出)。
  • 管線 |:前命令 STDOUT → 後命令 STDIN。
  • 濾器 (Filters):接收 stdin、轉換、輸出 stdout。常用:grep, sed, awk, tr, sort, uniq, wc, cut。

1.4 Shell 變數體系

  • 使用者自訂:var="value" (無空格)、echo $var、unset var。
  • 引用規則:單引號『』保留字面值、雙引號「」保留 $ ` \、反斜線 \ 轉義單一字元。
  • 特殊變數:$? (上一指令退出碼)、$$ (當前 PID)、$# (參數個數)、$@ (所有參數列表)。
  • 環境變數:export VAR=value 導出給子行程。關鍵變數:PATH, HOME, LANG, PS1/PS2, SHELL, TERM。

1.5 多指令與換行

cmd1; cmd2; cmd3          # 同一行循序執行
cmd1 \                    # 反斜線換行續輸入
  cmd2 \
  cmd3

二、Make 建構自動化核心 (補充)

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 演練模式 (不執行)。
copyright © 萬盛學電腦網 all rights reserved