全部速查表

Linux Shell 命令速查

Linux/macOS 日常 shell 命令快速參考:檔案操作、文字處理、權限、行程、網絡、封存與儲存——附常用參數與實作範例。

40 條命令

檔案與瀏覽

pwd

輸出當前工作目錄的絕對路徑。

pwd
ls

列出目錄內容。

-l 長格式;-a 含隱藏檔;-h 人類可讀大小;-t 依修改時間排序;-r 反序

ls -lah /var/log
cd <dir>

切換當前工作目錄。

cd ~/-projects/app && pwd
tree <dir>

以樹狀遞迴列出目錄;總覽非常方便(可能需要另行安裝)。

-L <n> 最大深度;-a 顯示隱藏;-d 只列目錄;-I 排除模式

tree -L 2 -I 'node_modules|.git' .

檔案操作

mkdir -p <dir>

一次建立目錄(連同缺少的上層目錄)。

-p 建立上層目錄;-v 詳細;-m <mode> 設定權限

mkdir -p src/components/ui
cp <src> <dest>

複製檔案或目錄。

-r 遞迴(目錄);-i 互動;-v 詳細;-p 保留權限/時間

cp -rv src/ backup/
mv <src> <dest>

移動(重新命名)檔案或目錄。

-i 互動;-v 詳細;-n 不覆蓋

mv README.md readme.md && mv ../tmp .
rm <path>

刪除檔案或目錄。⚠️ 沒有垃圾桶——請務必核對路徑。

-r 遞迴;-f 強制;-i 互動;-v 詳細

rm -rf build/ node_modules/
ln -s <target> <link>

在 <link> 建立指向 <target> 的符號連結。

-s 符號連結(預設為 hard link);-f 覆蓋既有;-n 不跟隨既有連結

ln -s /opt/app-v2 current
touch <file>

建立空檔案,或在不變動內容的情況下更新 mtime。

touch .gitignore

文字與檢視

cat <file>

將整份檔案內容輸出到 stdout。

-n 加上行號;-A 顯示不可列印字元;-s 壓縮空行

cat -n package.json
less <file>

以分頁器開啟檔案(用 /, n, N 搜尋;q 離開)。

-N 行號;-S 不換行;+F 自動追蹤(像 tail)

less -NS /var/log/syslog
head -n 10 <file>

輸出檔案前 N 行(預設 10)。

head -n 30 /etc/passwd
tail -n 50 -f <file>

顯示最後 N 行,並持續追蹤檔案成長(適合日誌)。

-f 追蹤;-F 追蹤並重試;-n 行數(預設 10);-c 位元組;--pid=PID 行程結束時停止

tail -f -n 50 /var/log/nginx/access.log

搜尋與篩選

grep <pattern> <files>

搜尋符合模式的行;支援延伸與 PCRE 正則。

-i 忽略大小寫;-r 遞迴;-n 行號;-v 反向;-E 延伸正則

grep -rni "TODO" src/
find <path> -name <pattern>

走訪目錄樹,列出符合條件的檔案。

-type f|d;-name glob;-iname 忽略大小寫;-size +1M;-mtime -7;-maxdepth

find . -type f -name "*.log" -mtime +7 -delete
awk '<prog>' <file>

模式-動作的文字掃描器——切欄位、加總等。

-F fs 欄位分隔;-v var=value;-f 腳本檔

awk -F'\t' 'NR>1 {sum+=$3} END {print sum}' data.tsv
sed 's/<a>/<b>/' <file>

串流編輯器——逐行做取代、刪除、插入。

-i 直接修改檔案;-E 延伸正則;-e 組合多個指令;s/from/to/[g] [p]

sed -i '' 's/version = "1\.."/version = "1.9"/' pyproject.toml
sort | uniq -c | sort -nr

管線慣用法:統計出現次數並依頻率降序排列。

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

權限

chmod <mode> <file>

變更檔案權限(例如 755、u+x、g-w、o=r)。

-R 遞迴;--reference=<file> 複製權限

chmod -R u=rwX,go=r ./docs
chown <user>[:<group>] <file>

變更檔案的擁有者與群組。

-R 遞迴;-h 影響符號連結(搭配 -R)

chown -R www-data:www-data /var/www/html
umask

顯示/設定新建立檔案的預設權限遮罩。

-S 符號格式;-p 保留可攜性

umask 022

行程與系統

ps aux

以 BSD 風格欄位顯示所有行程的詳細資訊。

-e 全部;-f 完整;-L 顯示執行緒;--sort=-%mem

ps auxf | grep -v grep | grep nginx
top / htop

即時互動式行程檢視器(htop 介面更友善,可能需另行安裝)。

P/CPU、M/MEM 排序;k kill;r renice;q 離開

htop -u www-data
kill [-9|<sig>] <pid>

對行程送訊號。SIGTERM (15) 較禮貌;SIGKILL (9) 強制終止。

-9 SIGKILL;-l 列出訊號;-s 以名稱指定訊號

kill -TERM 12345 && sleep 2 && kill -9 12345
jobs / bg / fg / nohup

管理工作——列出、丟背景、回到前景、避免 hangup 中斷。

nohup ./long-task.sh > out.log 2>&1 &
systemctl <verb> <unit>

控制 systemd 服務與單元(status、start、stop、enable、logs)。

status / start / stop / restart / enable / disable;-u <user>

systemctl status nginx && systemctl reload nginx

網絡

wget <url>

非互動式下載工具;對遞迴/鏡像很友善。

-c 續傳;-q 安靜;--no-check-certificate;-r 遞迴

wget -c https://example.com/big-archive.tar.gz
ssh <user>@<host> [cmd]

開啟 SSH 工作階段,或在遠端主機上執行單一指令。

-p <port>;-i <key>;-L / -R / -D 埠轉發;-N 不執行遠端命令;-f 背景

ssh -i ~/.ssh/id_ed25519 user@host 'sudo systemctl restart nginx'
scp / rsync

在遠端主機之間複製檔案。rsync 在局部/重複傳輸時較快。

scp -r / rsync -avz --progress src/ user@host:/dst/

rsync -avz --progress ./build/ deploy@server:/srv/app/
ping / traceroute / ss

診斷連線可達性、封包路徑與監聽中的 socket。

ping -c N 次數;ss -tulnp 監聽資訊;ss -s 摘要

ss -tulnp | grep -E ':80|:443'

封存與壓縮

tar -czf out.tgz <paths>

建立或解開 tar 封存,可搭配 gzip/bzip2/xz。

-c 建立;-x 解開;-t 列出;-z gzip;-j bzip2;-J xz;-v 詳細;-C <dir>

tar -czf - src/ | ssh server 'tar -xzf - -C /srv/app'
zip -r out.zip <paths>

以遞迴方式建立 zip 封存檔。

-r 遞迴;-9 最高壓縮;-e 加密;-j 不保留路徑

zip -r9 build-$(date +%Y%m%d).zip dist/
unzip [-d <dir>] file.zip

解開 zip 封存,可指定目標目錄。

-d 目標目錄;-o 覆寫;-l 列出;-p 輸出到 stdout;-q 安靜

unzip -o build.zip -d ./extracted

磁碟與儲存

df -h

顯示已掛載檔案系統的磁碟用量,以人話可讀格式呈現。

-h 人話可讀;-T 顯示檔案系統類型;-i inode 資訊

df -hT /
du -sh <path>

估算檔案佔用空間;-s 對目錄只給總計。

-s 總計;-h 人話可讀;-a 全部;--max-depth=N;-x 不跨越檔案系統

du -sh node_modules/ build/ .

Shell 內建

history / !! / !$

瀏覽、重播、重用先前的命令。

history N;!<n> 重跑第 N 行;!$ 取上一個命令的最後參數;!! 重跑上一個

git add . && git commit -m "$(!!)"
alias / unalias

定義或列出 shell 命令捷徑(常寫在 ~/.bashrc/~/.zshrc)。

alias ll='ls -lah' && alias gs='git status'
env / export / unset

列出、設定、清除子行程可見的環境變數。

export DATABASE_URL=postgres://localhost/dev && env | grep DATABASE

說明

man <cmd> / <cmd> --help

閱讀命令的手冊頁(man)或內建說明。

man -k 關鍵字搜尋;man -t <cmd> 列印成 PDF;--help 簡短用法

man -k 'tar archive'

速查頁版本 1.0.0

適用於 bash 5+ / POSIX 2017