雖 KDE/GNOME 等圖形桌面讓用戶無需深知命令列也能使用 Linux,但實際運維仍需更強大功能與彈性。熟悉基礎指令對 Shell 腳本自動化亦屬必須。本文為「速成教程」,針對初學者或需補充知識者,結合範例實踐輕鬆掌握核心指令(註:搭配 OCFS 核心時行為可能略異,Oracle 提供 OCFS 工具集為更佳選擇)。所有範例經 SUSE Linux 8.0 Professional 測試,其他發行版大同小異,若遇問題請參閱系統文件。
Linux/UNIX 將硬體裝置(鍵盤、終端機)、目錄、命令本身視為檔案處理,這看似奇特的慣例是系統強大彈性的基石。多數指令格式:command [option] [source file(s)] [target file]。
whatis 指令:查詢指令簡述(如 whatis echo)man 指令:詳細手冊頁(man echo)man -k 關鍵字(同 apropos):搜尋相關指令(man -k files)man man:man 本身操作說明(常被忽略但極實用)瀏覽手冊頁:Space 翻頁、↑ 向上、q/!/Ctrl+Z 離開。
root(超級用戶)掌管一切。可用 su 切換身分執行管理任務(新增用戶、印表機、檔案系統等)。系統檔案歸 root 所有,一般用戶僅可讀取,編輯權保留給 root 以確保安全。
Linux 預設 Shell,融合 Bourne、Korn、C、TCSH 特性。內建 history 記錄最近 500 條指令,history 查看,↑/↓ 檢索,!編號 重執行(如 !49),!-n 執行倒數第 n 筆。環境變數:HOME 家目錄、PATH 指令搜尋路徑、HISTSIZE 歷史筆數。可暫時設定 HISTSIZE=100,永久設定寫入 /etc/profile(需 root)或 .profile。用 echo $變數名 或 env 查看變數值。
Shell 萬用字元:* 比對任意字元數、? 比對單一字元、[...] 比對字元組。正則表達式用 . 比對除換行外單一字元、[...] 比對字元組。* 在 Shell 比對一或多字元,在正則表達式比對零或多實例。egrep、awk 使用更豐富特殊字元。
$ ls -liah * 22684 -rw-r--r-- 1 bluher users 952 Dec 28 18:43 .profile 19942 -rw-r--r-- 1 scalish users 30 Jan 3 20:00 test2.out 925 -rwxr-xr-x 1 scalish users 378 Sep 2 2002 test.sh
-l 詳細、-i 顯示 inode、-a 含隱藏檔、-h 人類可讀大小。八欄:inode、類型權限、連結數、擁有者/群組、大小、日期、檔名。
建議加 -i 互動確認。mv -b 移動前備份。rm -r、cp -r 遞歸處理目錄(危險但強大)。
$ cp -i ls.out ls2.out cp: overwrite `ls2.out'? [y/n]
建立目錄用 mkdir,刪除空目錄用 rmdir,非空目錄用 rm -r 更方便。
權限 10 字元:第 1 字元類型(- 檔案、d 目錄、l 連結),後 9 字元分三組(擁有者、群組、其他),各 rwx(讀寫執行),- 表禁止。
chmod 以符號或八進位設定。八進位轉換:rwx=111=7、r-x=101=5、r--=100=4 → 754。例:
chmod g+w test.sh chmod 774 test.sh
umask 設定預設權限(系統用 777 減去 umask 值)。umask 022 產生預設 755。chown 改擁有者,chgrp 改群組。file * 可辨識文字/二進位檔案。
alias 為長命令設短名或路徑縮寫:
$ alias ll='ls -l' $ alias jdev9i=/jdev9i/jdev/bin/jdev
注意單引號防止 Shell 預先解釋。unalias 移除別名。環境變數同樣可達路徑縮寫效果:
$ export JDEV_HOME=/jdev9i/jdev/bin/jdev $ $JDEV_HOME
ln [-s] source target 建立連結:-s 為軟連結(跨檔案系統),無 -s 為硬連結(同檔案系統、同一 inode 多檔名)。兩者均不複製檔案內容。