Linux shell 常用指令
Bash 內建指令
alias:定義指令及參數別名
cd:切換目錄
declare:宣告 shell 變數
| 參數 |
說明 |
| -i |
指定變數為整數,自動計算運算式 |
| -p |
顯示變數的宣告方式 |
| -r |
宣告唯讀變數 |
| -x |
將變數輸出為環境變數(等同於 export) |
enable:啟用或停用 shell 內建指令
| 參數 |
說明 |
| -a |
顯示所有可用內建指令 |
| -n |
停用指定內建指令 |
export:宣告環境變數
| 參數 |
說明 |
| -f |
宣告的名稱為函數名稱 |
| -n |
取消變數的匯出 |
| -p |
顯示所有已匯出的變數 |
help:查看 bash 內建指令說明
history:顯示歷史指令紀錄
| 參數 |
說明 |
| -c |
清除所有歷史記錄 |
| -d 編號 |
刪除指定編號的歷史指令 |
| -n 檔案 |
讀入尚未讀入的歷史記錄 |
| -r 檔案 |
讀入指定歷史檔,但不列入當前 session |
| -w 檔案 |
將目前記錄寫入歷史檔案 |
unset:移除變數或函式
| 參數 |
說明 |
| -f |
僅移除函式 |
| -v |
僅移除變數(預設) |
常用指令
一般操作
| 指令 |
說明 |
| cd |
切換目錄 |
| clear |
清除畫面內容 |
| echo |
顯示文字 |
| exit |
離開目前的 shell |
| help |
顯示 shell 內建說明 |
| history |
顯示輸入過的指令歷史 |
| ls |
列出目錄內容 |
| man |
顯示線上說明手冊 |
設定類指令
| 指令 |
說明 |
| alias |
定義命令別名 |
| at |
指定未來時間執行指令 |
| export |
宣告環境變數 |
| ln |
建立檔案連結(符號連結或硬連結) |
| passwd |
修改使用者密碼 |
檔案操作
| 指令 |
說明 |
| cat |
顯示檔案內容 |
| cp |
複製檔案或目錄 |
| df |
顯示磁碟使用空間 |
| diff |
比較兩個檔案差異 |
| du |
顯示目錄或檔案大小 |
| find |
搜尋符合條件的檔案 |
| grep |
搜尋檔案中的特定字串 |
| head |
顯示檔案開頭內容 |
| less |
分頁方式顯示檔案 |
| more |
類似 less,較簡易 |
| mv |
移動或重新命名檔案 |
| pwd |
顯示目前所在目錄 |
| rm |
刪除檔案或目錄 |
打包與壓縮
| 指令 |
說明 |
| bzip2 |
壓縮為 .bz2 格式 |
| gzip |
壓縮為 .gz 格式 |
| tar |
打包與壓縮檔案 |
| zip |
壓縮為 .zip 格式 |
其他
| 指令 |
說明 |
| cal |
顯示月曆 |
| date |
顯示或設定系統日期時間 |
系統管理常用指令
| 指令 |
說明 |
| chmod |
改變檔案或目錄權限 |
| chown |
變更檔案或目錄擁有者 |
| free |
顯示記憶體使用狀況 |
| groupadd |
新增群組 |
| groupdel |
刪除群組 |
| halt |
關閉系統 |
| ifconfig |
設定/查看網路介面(較舊系統使用) |
| ip |
查看或設定網路(建議用於新系統) |
| init |
改變系統執行層級(大多使用 systemctl 取代) |
| kill |
傳送訊號終止程序 |
| last |
顯示最近登入紀錄 |
| mount |
掛載檔案系統 |
| netstat |
顯示網路狀態(已過時,建議改用 ss) |
| ping |
測試網路連線狀態 |
| ps |
顯示目前執行中的程序 |
| reboot |
重新開機 |
| route |
顯示/設定路由表(建議改用 ip route) |
| rpm |
管理 RPM 套件(RedHat/CentOS 系統) |
| shutdown |
關機或重新啟動系統 |
| sync |
將記憶體資料同步寫入磁碟 |
| umount |
卸載檔案系統 |
| useradd |
新增使用者帳號 |
| userdel |
刪除使用者帳號 |
| w |
顯示登入使用者與其動態資訊 |
| who |
顯示目前登入的使用者 |
資源查看指令:top, htop,
uptime, free, ps, df
top
顯示即時的系統資源狀態,包括 CPU 使用率、記憶體使用量、SWAP 空間和正在執行的進程清單。
htop (需另外安裝)
htop 是 top 的進階版本,介面更友善,支援鍵盤操作。
uptime
顯示系統啟動時間與平均負載。
free
顯示系統記憶體使用狀況。
ps
列出當前系統的進程資訊,支援多種參數過濾與排序。
df
顯示磁碟分區使用情況。
清單查詢:ls / ll
ls
列出指定目錄下的文件與目錄,常用選項:
-a:顯示所有文件(含隱藏檔)
-l:長列表格式顯示詳細資訊(權限、擁有者、大小、時間)
-h:與 -l 合用,以易讀大小單位顯示檔案大小
-S:依檔案大小排序
-t:依修改時間排序(最新在前)
-r:反向排序
-R:遞迴列出子目錄
-d:顯示目錄本身資訊,而非內容
-i:顯示 inode 編號
-F:在檔名後標示類型(如目錄後加 /)
ll
通常為 alias ll='ls -l',顯示詳細資訊的列表格式。
列印工作路徑 pwd
顯示目前所在的完整工作目錄路徑。
顯示文件內容:cat / less /
more / head / tail
-
cat:直接輸出整個檔案內容
-
less:分頁查看檔案,可滾動與搜尋
-
more:較簡單的分頁查看工具
-
head:預設顯示檔案前 10 行
-
tail:預設顯示檔案後 10 行
查詢 DNS 記錄:nslookup
查詢域名對應的 IP,亦可查詢特定 DNS 紀錄如 MX、NS,或指定 DNS 伺服器。
查看 / 變更文件擴展屬性:lsattr /
chattr
lsattr
列出文件或目錄的擴展屬性。
常用選項:
-a:包括隱藏檔案
-d:只顯示目錄本身屬性
-R:遞迴顯示目錄內容屬性
-Z:顯示 SELinux 安全上下文
chattr
設置或取消文件/目錄屬性,如只讀、不可刪除等。
常用參數:
-R:遞迴修改
+:新增屬性
-:移除屬性
a:只能附加寫入(append only)
i:不可修改或刪除(immutable)
範例:
搜尋文件與目錄:find
基本語法:
常用條件:
-name "pattern":依檔名搜尋(支援通配符)
-type [f|d|l|s]:檔案類型 (f:檔案, d:目錄, l:符號連結)
-mtime +N:N 天前修改(+N:超過 N 天,-N:少於 N 天)
-newermt "YYYY-MM-DD":修改時間晚於指定日期
-size +10M:檔案大於 10MB
-exec command {} \;:對搜尋結果執行命令
範例:
文字搜尋工具:grep
基本語法:
常用選項:
-i:忽略大小寫
-v:反向匹配,顯示不含 pattern 的行
-c:只顯示匹配行數
-n:顯示行號
-r:遞迴搜尋目錄
-w:只匹配整詞
-e:指定多重模式
-f:從文件讀取模式
範例:
建立目錄與符號連結:mkdir / ln
mkdir
ln
範例:
創建或更新檔案時間戳:touch
常用參數:
-a:只更新訪問時間
-m:只更新修改時間
-c:檔案不存在不建立
-d:指定日期時間
-r:使用其他檔案時間戳
刪除文件或目錄:rm
更改權限:chmod
權限可用數字或符號表示:
- 數字範例:
chmod 755 file (擁有者 rwx,群組和其他人 rx)
- 符號範例:
chmod u+rw file(擁有者加讀寫權限)
參數:
u:擁有者(user)
g:群組(group)
o:其他人(others)
a:全部(all)
+:增加權限
-:移除權限
=:設定權限
權限:
範例:
更改擁有者與群組:chown
語法:
常用選項:
範例:
查看磁碟使用狀況:df
語法:
常用選項:
-h:人類可讀格式
-T:顯示檔案系統類型
-i:顯示 inode 使用狀況
-a:包含所有檔案系統
-x:排除指定檔案系統
範例:
壓縮資料夾:zip
安裝:
常用選項:
-r:遞迴壓縮目錄
-q:安靜模式
-9:最高壓縮率
-j:不包含路徑,只壓縮檔案
-u:更新已壓縮檔
-l:列出檔案清單,不壓縮
-v:顯示壓縮過程
-d:解壓縮目錄
-x:排除檔案
-T:測試壓縮檔完整性
-h:顯示幫助
範例:
Linux shell 常用指令
Bash 內建指令
alias:定義指令及參數別名
alias [別名]='[指令]' alias ll='ls -al'cd:切換目錄
cd /tmp # 進入 /tmp cd .. # 返回上一層目錄 cd ~ # 返回家目錄 cd - # 返回上一個所在的目錄declare:宣告 shell 變數
sum=100+200 echo $sum # 輸出 100+200(非運算) declare -i sum=100+300+50 echo $sum # 輸出 450(整數運算)export)enable:啟用或停用 shell 內建指令
enable -a # 顯示所有啟用中的內建指令 enable -n cd # 停用內建的 cd 指令export:宣告環境變數
export myname=jack echo $myname export -p # 列出所有環境變數help:查看 bash 內建指令說明
help cdhistory:顯示歷史指令紀錄
history 5 # 顯示最近 5 筆歷史紀錄 history -c # 清除所有歷史紀錄 history -d 10 # 刪除第 10 筆歷史紀錄unset:移除變數或函式
num=1 echo $num unset num echo $num # 無輸出常用指令
一般操作
設定類指令
檔案操作
打包與壓縮
其他
系統管理常用指令
systemctl取代)ss)ip route)資源查看指令:top, htop, uptime, free, ps, df
top
顯示即時的系統資源狀態,包括 CPU 使用率、記憶體使用量、SWAP 空間和正在執行的進程清單。
htop (需另外安裝)
htop是top的進階版本,介面更友善,支援鍵盤操作。uptime
uptime顯示系統啟動時間與平均負載。
free
free free -m # 以 MB 顯示 free -h # 以可讀格式顯示(K、M、G)顯示系統記憶體使用狀況。
ps
列出當前系統的進程資訊,支援多種參數過濾與排序。
df
df df -h # 以可讀格式顯示磁碟空間顯示磁碟分區使用情況。
清單查詢:ls / ll
ls
列出指定目錄下的文件與目錄,常用選項:
-a:顯示所有文件(含隱藏檔)-l:長列表格式顯示詳細資訊(權限、擁有者、大小、時間)-h:與-l合用,以易讀大小單位顯示檔案大小-S:依檔案大小排序-t:依修改時間排序(最新在前)-r:反向排序-R:遞迴列出子目錄-d:顯示目錄本身資訊,而非內容-i:顯示 inode 編號-F:在檔名後標示類型(如目錄後加/)ll
通常為
alias ll='ls -l',顯示詳細資訊的列表格式。列印工作路徑 pwd
pwd顯示目前所在的完整工作目錄路徑。
顯示文件內容:cat / less / more / head / tail
cat:直接輸出整個檔案內容cat file1 file2 # 連接多個文件內容顯示 cat file1 > file2 # 複製 file1 內容覆蓋到 file2 cat file.txt | grep "pattern" # 篩選符合條件的行less:分頁查看檔案,可滾動與搜尋more:較簡單的分頁查看工具head:預設顯示檔案前 10 行tail:預設顯示檔案後 10 行查詢 DNS 記錄:nslookup
查詢域名對應的 IP,亦可查詢特定 DNS 紀錄如 MX、NS,或指定 DNS 伺服器。
查看 / 變更文件擴展屬性:lsattr / chattr
lsattr
列出文件或目錄的擴展屬性。
常用選項:
-a:包括隱藏檔案-d:只顯示目錄本身屬性-R:遞迴顯示目錄內容屬性-Z:顯示 SELinux 安全上下文chattr
設置或取消文件/目錄屬性,如只讀、不可刪除等。
常用參數:
-R:遞迴修改+:新增屬性-:移除屬性a:只能附加寫入(append only)i:不可修改或刪除(immutable)範例:
chattr +i file.txt # 設為不可更改 chattr -i file.txt # 取消不可更改屬性搜尋文件與目錄:find
基本語法:
常用條件:
-name "pattern":依檔名搜尋(支援通配符)-type [f|d|l|s]:檔案類型 (f:檔案, d:目錄, l:符號連結)-mtime +N:N 天前修改(+N:超過 N 天,-N:少於 N 天)-newermt "YYYY-MM-DD":修改時間晚於指定日期-size +10M:檔案大於 10MB-exec command {} \;:對搜尋結果執行命令範例:
find /path/to/directory -type f -name "*.txt" -newermt "2022-12-31" find /path/to/directory -type f -not \( -name "*.jpg" -or -name "*.png" \) -newermt 2022-12-01 ! -newermt 2022-12-31 find /path/to/search -type f -mtime -30 find /path/to/search -size +200M -exec ls -lh {} \; find /path/to/search -type f -name "*.txt" -exec rm {} \;文字搜尋工具:grep
基本語法:
常用選項:
-i:忽略大小寫-v:反向匹配,顯示不含 pattern 的行-c:只顯示匹配行數-n:顯示行號-r:遞迴搜尋目錄-w:只匹配整詞-e:指定多重模式-f:從文件讀取模式範例:
grep '^foo' file.txt find /path -type f -exec grep -H "medtopstore" {} \;建立目錄與符號連結:mkdir / ln
mkdir
mkdir example # 建立單一目錄 mkdir test logs # 建立多個目錄 mkdir -p projects/{src,lib,test} # 建立多級目錄ln
ln -s 目標路徑 連結名稱 # 建立符號連結(捷徑)範例:
ln -s /data/lnmp/www /data/wwwroot創建或更新檔案時間戳:touch
touch example.txt touch -t 202202261212 example.txt # 指定時間戳記常用參數:
-a:只更新訪問時間-m:只更新修改時間-c:檔案不存在不建立-d:指定日期時間-r:使用其他檔案時間戳刪除文件或目錄:rm
rm file.txt rm -r directory # 遞迴刪除目錄 rm -f file.txt # 強制刪除,不提示 rm -i file.txt # 互動式刪除,需確認更改權限:chmod
權限可用數字或符號表示:
chmod 755 file(擁有者 rwx,群組和其他人 rx)chmod u+rw file(擁有者加讀寫權限)參數:
u:擁有者(user)g:群組(group)o:其他人(others)a:全部(all)+:增加權限-:移除權限=:設定權限權限:
r:讀取(4)w:寫入(2)x:執行(1)範例:
chmod u+rw file.txt chmod a+rwx dir chmod 644 file.txt chmod -R a+rwx dir find /path -type d -print0 | xargs -0 chmod 0755 # 目錄權限 find /path -type f -print0 | xargs -0 chmod 0644 # 檔案權限更改擁有者與群組:chown
語法:
chown [選項] 新擁有者:新群組 檔案或目錄常用選項:
-R:遞迴更改子目錄和檔案範例:
sudo chown nginx:www-data /var/log/nginx/access.log chown user file.txt chown user:group file.txt查看磁碟使用狀況:df
語法:
df [選項] [檔案系統或路徑]常用選項:
-h:人類可讀格式-T:顯示檔案系統類型-i:顯示 inode 使用狀況-a:包含所有檔案系統-x:排除指定檔案系統範例:
df -h df /dev/sda1壓縮資料夾:zip
安裝:
常用選項:
-r:遞迴壓縮目錄-q:安靜模式-9:最高壓縮率-j:不包含路徑,只壓縮檔案-u:更新已壓縮檔-l:列出檔案清單,不壓縮-v:顯示壓縮過程-d:解壓縮目錄-x:排除檔案-T:測試壓縮檔完整性-h:顯示幫助範例:
zip -r output.zip source_folder -x "*.jpg" "*.png" "*.gif"