用 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將程式放到背景執行。