Linux 系統管理與開發離不開核心指令操作。本文整理 9 個最高頻指令的語法、核心參數與實戰範例,採用速查手冊風格,方便隨時查閱。內容涵蓋檔案查看、目錄切換、權限管理、擁有者變更、複製剪貼、文字擷取、檔案搜尋、分頁瀏覽與連結建立。
cat [選項] [檔案...]
-n / --number:對所有輸出行編號(從 1 開始)-b / --number-nonblank:類似 -n,但空白行不編號-s / --squeeze-blank:連續多行空白行壓縮為單行-A / --show-all:顯示不可見字元($ 為換行、^I 為 Tab)cat -n file1 > file2 # 加行號後導向新檔
cat -b file1 file2 >> file3 # 合併兩檔、空行不編號、附加到 file3
cat -A script.sh # 檢查隱藏字元(如 ^M 載入問題)
cd [目錄路徑]
~:家目錄($HOME).:目前目錄..:上一層目錄-:上一次工作目錄(cd - 快速切換)cd /usr/bin # 絕對路徑
cd ~/projects # 相對家目錄
cd ../../ # 向上兩層
cd - # 返回上一目錄
chmod [選項] 模式 檔案...
[ugoa...][+-=][rwxX...][,...]
u=user(擁有者) g=group(群組) o=other(其他) a=all(全部)
+增加 -移除 =設定
r=讀 w=寫 x=執行 X=目錄或已有執行位才生效
-R:遞迴處理子目錄-v:顯示變更細節-c:僅顯示實際變更的檔案r=4 w=2 x=1
chmod 755 file # u=rwx(7) g=rx(5) o=rx(5)
chmod 644 file # u=rw(6) g=r(4) o=r(4)
chmod 700 dir # 僅擁有者可進入目錄
4xxx:SUID(執行時具檔案擁有者權限)2xxx:SGID(執行時具群組權限;目錄下新檔繼承群組)1xxx:Sticky bit(目錄下僅擁有者可刪除檔案,如 /tmp)chmod u+x script.sh # 擁有者加執行權
chmod a+r file.txt # 所有人可讀
chmod ug+w,o-w file1 file2 # 擁有者/群組可寫,其他不可寫
chmod -R a+rX /var/www # 目錄加 x,檔案不加 x
chmod 4755 /usr/bin/passwd # 設定 SUID
chown [選項] [使用者][:群組] 檔案...
-R:遞迴處理-h / --no-dereference:修改符號連結本身而非目標檔案-v:顯示變更細節chown jessie:users file.txt # 變更擁有者與群組
chown -R lamport:users /home/lamport # 遞迴變更家目錄
chown :developers project/ # 僅變更群組
chown -h user linkfile # 修改連結檔本身擁有者
注意:僅 root 可變更檔案擁有者;一般使用者僅能在擁有檔案且屬於目標群組時變更群組。
cp [選項] 來源 目標
cp [選項] 來源... 目標目錄
-a / --archive:保留所有屬性(權限、時間戳、擁有者、連結等),等同 -dR --preserve=all-r / -R:遞迴複製目錄-f / --force:目標存在時先移除再複製-i / --interactive:覆蓋前詢問-u / --update:僅複製較新的檔案-p:保留模式、擁有者、時間戳(-a 含此意)cp file1 file2 # 複製並重命名
cp -a /src/dir /backup/ # 完整備份保留屬性
cp -u *.c /dest/ # 僅更新較新的 .c 檔
cp -r dir1/ dir2/ # 複製整個目錄樹
cut -c 字元範圍 檔案 # 按字元位置
cut -d 分隔字元 -f 欄位範圍 檔案 # 按欄位分隔
cut -c1-10 file.txt # 擷取每行第 1-10 字元
cut -d: -f1,3 /etc/passwd # 以 : 分隔,取第 1、3 欄(帳號、UID)
cut -d' ' -f2- # 以空白分隔,取第 2 欄到結尾
find [路徑...] [運算式]
| 選項 | 說明 |
|---|---|
-name 模式 | 檔名匹配(區分大小寫),-iname 忽略大小寫 |
-type 類型 | f=檔案 d=目錄 l=符號連結 b=區塊裝置 c=字元裝置 p=FIFO s=socket |
-size [+-]數字[單位] | c=bytes k=KiB M=MiB G=GiB;+ 大於、- 小於、無符號=等於 |
-mtime [+-]n | n*24 小時前修改;-atime 存取時間、-ctime 狀態改變時間 |
-mmin [+-]n | n 分鐘前修改 |
-user 名稱 / -group 名稱 | 擁有者/群組 |
-perm 模式 | 權限匹配(如 -perm -u=x 擁有者可執行) |
-empty | 空檔案或空目錄 |
-print:預設動作,輸出路徑-exec 指令 {} \;:對每個結果執行指令({} 為路徑佔位符)-exec 指令 {} +:批次執行(較高效)-ok 指令 {} \;:執行前詢問確認-delete:直接刪除(謹慎使用)( expr ) # 分組
! expr # 非
-not expr # 非
expr1 -a expr2 # 且(預設)
expr1 -and expr2
expr1 -o expr2 # 或
expr1 -or expr2
# 找出家目錄下所有 .log 檔,大於 10MB,7 天未修改
find ~ -name "*.log" -type f -size +10M -mtime +7
# 找出 /var/log 下擁有者為 root、權限含 777 的檔案
find /var/log -user root -perm -777 -type f
# 批次壓縮 30 天前的 .log 檔
find /var/log -name "*.log" -mtime +30 -exec gzip {} +
# 刪除 /tmp 下 7 天未存取的空檔
find /tmp -type f -empty -atime +7 -delete
less [選項] 檔案
Space 下一頁、b 上一頁、/關鍵字 向下搜尋、?關鍵字 向上搜尋、n 下一個、N 上一個、g 首行、G 尾行、q 離開-N / --LINE-NUMBERS:顯示行號-S / --chop-long-lines:長行截斷不換行(左右鍵捲動)+F:類似 tail -f 持續追蹤(Ctrl+C 退出追蹤模式)ln [選項] 來源 目標 # 建單一連結
ln [選項] 來源... 目錄 # 在目錄下建多個連結
| 特性 | 硬連結 (Hard Link) | 符號連結 (Symbolic/Soft Link) |
|---|---|---|
| 指令 | ln source link | ln -s source link |
| inode | 相同 | 不同 |
| 跨檔案系統 | 否 | 是 |
| 連結目錄 | 否(root 除外) | 是 |
| 來源刪除後 | 資料仍存在(連結計數-1) | 變成斷連結(dangling) |
| 磁碟開銷 | 極小(僅目錄項) | 極小(儲存路徑字串) |
-s / --symbolic:建立符號連結-f / --force:目標存在時強制移除再建立-i / --interactive:覆蓋前詢問-v / --verbose:顯示建立細節-b / --backup:備份既有目標檔ln file.txt file_hardlink # 硬連結
ln -s /opt/app/current app_link # 符號連結(部署常用)
ln -sf /usr/bin/python3 python # 強制更新符號連結
ln -v file1 file2 dir/ # 批次建立並顯示訊息
這 9 個指令構成 Linux 日常操作的骨幹。建議先熟練 cd、ls、cp、mv、rm、cat、less、chmod、chown、find 的核心用法,再逐步掌握進階參數與組合技巧。實務中善用 man 指令、指令 --help 與 info 指令 即時查閱細節,比死記硬背更有效率。