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