用 Shell 環境操作 Linux 作業系統
Louis Pouzin 在發展 Multics 作業系統時,使用 Shell(殼)來稱呼「使用者操作介面」,有別於 Core(核)。就這樣從 UNIX 傳承到 BSD 與 Linux,大家習慣把「使用者操作介面」的術語稱為 Shell。
雖然「圖形化使用者介面(GUI;Graphical User Interface)」也是一種 Shell,但大多還是習慣把 Shell 視為傳統「指令列介面(CLI;Command Line Interface)」的環境,然後將「圖形化使用介面」另外稱為 Desktop 環境加以區別。
Shell 發展至今有許多種,Linux 預設使用 Bash(Bourne Again Shell),是 Brian Fox 特地為 GUN 計畫設計的指令操作模式。
磁碟操作與檔案處理等基本控制
| cd 完整路徑 | 切換所在資料夾位置。 |
| cd 資料夾名稱 | 切換到這一層指定名稱的資料夾 |
| cd .. | 切換到上一層資料夾。 |
| ls | 顯示資料夾與檔案。 |
| ls -al | 以清單列出資料夾與檔案。 |
| man 程式指令 | 查閱程式或指令的使用指南。 |
| find / -name 程式指令 | 查詢指令的存放路徑。 |
| cat 檔案名稱 | 從頭開始往下顯示檔案內容。 |
| cat -n 檔案名稱 | 從頭開始往下顯示檔案內容,並且標上行號。 |
| tac 檔案名稱 | 從尾開始往上顯示檔案內容。 |
| more 檔案名稱 | 以每頁文件的模式來檢閱檔案內容。 |
| less 檔案名稱 | 用文字處理器來檢閱檔案內容。 |
| head 檔案名稱 | 顯示檔案最前面十行的內容。 |
| tail -f 檔案名稱 | 顯示檔案最後面十行的內容,並持續更新。 |
| paste 檔案一 檔案二 | 以欄位並列的方式顯示兩個檔案 |
| grep 正規表示法 檔案名稱 | 以正規表示法篩選檔案內容來檢視。 |
| wc -c 檔案名稱 | 顯示檔案的大小。 |
| wc -w 檔案名稱 | 顯示檔案的字元數。 |
| wc -l 檔案名稱 | 顯示檔案的列數 |
| sh 程式指令 | 執行程式指令。 |
| mkdir 資料夾名稱 | 建立新資料夾。 |
| touch 檔案名稱 | 建立新檔案,若檔案已存在則更新修改與存取時間。 |
| touch -t 198906071357.35 | 指定為 1989 年 6 月 7 日 13 點 57 分 35 秒。 |
| touch -a 檔案名稱 | 只更新檔案存取時間。 |
| touch -m 檔案名稱 | 只更新檔案修改時間。 |
| vi 檔案名稱 | 編輯文字檔案的內容,通常用來修改設定檔。 |
| cp 來源資料夾或檔案 目的名稱 | 複製資料夾或檔案。 |
| mv 來源資料夾或檔案 目的名稱 | 搬移資料夾或檔案;重新命名也是透過這指令來完成。 |
| rm -fr 資料夾或檔案 | 強制刪除資料夾或檔案。 |
| mount 裝置名稱 資料夾名稱 | 將裝置掛載到資料夾。 |
| unmount 資料夾名稱 | 卸載資料夾。 |
| rename s/舊/新/ 檔案 | 批次改檔名,例如 rename s/jpg/jpeg/ *.jpeg。 |
| tar -cf 目的 來源 | 將檔案打包成單個檔案來保存。 |
| tar -rf 目的 來源 | 將檔案加入到封裝檔裡面。 |
| tar -xf 封裝檔案 | 解開打包起來的檔案。 |
| tar -tf 封裝檔案 | 檢視封裝檔案的內容。 |
| tar -zcf 目的 來源 | 將檔案以 gzip 壓縮起來保存,通常改用 gzip。 |
| tar -zxf 封裝檔案 | 解開 gzip 壓縮檔,通常改用 gunzip 指令。 |
| split -n 行數 來源檔案 目的檔名 | 將檔案依行數大小切割為多個檔案。 |
| chomd 777 資料夾或檔案名稱 | 修改使用權限為可讀可寫可執行。(不建議使用) |
| chmod 555 資料夾或檔案名稱 | 修改使用權限為唯讀可執行。 |
| df -a | 顯示檔案使用的磁碟系統訊息。 |
| fdisk /dev/裝置名稱 | 以交談介面啟動磁碟分割工具。 |
| mkfs -t 格式 掛載裝置 | 格式化磁碟。 |
| mkswap 磁碟裝置 | 格式化為虛擬磁碟。 |
| fsck -f | 檢修檔案系統。 |
| badblocks -vs 分割槽 | 檢修是否壞軌,可用 -n 參數修復,但可能破壞檔案。 |
| 指令 > 檔案名稱 | 將指令執行結果儲存為檔案。 |
| history | 列出輸入過的指令。 |
| clear | 清空畫面。 |
| shutdown -h now | 關機。 |
| shutdown -r now | 重新開機,通常改用 reboot 指令。 |
| * | 萬用一或多字元。 |
| ? | 萬用單一字元。 |
| . | 表示當前資料夾所在位置。 |
tail -f 可用在系統軟體產生的訊息文件,藉以監控系統狀態,相當實用。
存取檔案時,不要為了貪圖方便,使用 chmod 777 修改使用權限,不如輸入 sudo -i 進入管理員權限。只有在確定資料夾或檔案的使用權限應該如何,才使用 chmod 修正過來。
程序管理
| ps -aux | 顯示所有執行程序。 |
| top | 持續顯示所有執行程序,並定期更新狀態。 |
| kill -KILL 程序識別號 | 終止執行程序。 |
| bg | 背景執行程序,通常在程式指令後面加 & 代替。 |
| jobs -l | 顯示背景執行的程序。 |
| nice -n 等級 程序 | 設定程序執行的優先等級,-20到19,越低越優先。 |
| /etc/rc.d/init.d/服務名稱 start | 啟動服務程序。 |
| /etc/rc.d/init.d/服務名稱 stop | 停止服務程序。 |
| /etc/rc.d/init.d/服務名稱 restart | 重新啟動服務程序。 |
背景執行是指輸入程式指令後,立刻歸還命令提示狀態,可以一邊執行程式、一邊繼續輸入其它指令。通常輸入程式指令,必須等待程式動作完畢,才能再輸入下一個指令。
帳戶管理
| useradd -m 使用者名稱 | 新增使用者。 |
| passwd 使用者名稱 | 設定使用者密碼。 |
| userdel -r 使用者名稱 | 刪除使用者帳戶,並清除資料夾。 |
| usermod -s 殼 使用者帳戶 | 更改使用者帳戶的 SHELL。 |
| usermod -p 密碼 使用者帳戶 | 更改使用者帳戶的密碼,通常改用 passwd 指令。 |
| usermod -d 目錄名稱 使用者帳戶 | 更改使用者帳戶的家目錄名稱。 |
| su 使用者名稱 | 切換到其他帳戶。 |
| sudo 程式指令 | 以管理員權限執行程式指令。 |
| exit | 關閉 SHELL。 |
| logout | 登出帳戶。 |
系統資訊
| export 變數名稱=值 | 設定變數。 |
| unset 變數名稱 | 移除變數。 |
| set | 顯示系統變數。 |
| env | 顯示環境變數。 |
| echo $變數名稱 | 檢視單一變數內容。 |
其它
| date | 顯示日期與時間。 |
| apt-get update | 更新套件列表。 |
| apt-get install 套件 | 安裝應用程式。 |
| apt-get remove 套件 | 移除應用程式。 |
| q | 幾乎所有 SHELL 底下的程式,都按 q 來離開。 |
| Ctrl+C | 關閉程式。 |
| Ctrl+Z | 將程式放到背景執行。 |