🐧 Linux 命令列

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
發佈

2025年8月31日

用於導航、檔案、程序、網路、監控、套件與自動化的基礎與進階指令。適合 DevOps 工作流程。

🔹 基本指令

指令

範例

說明

cat 顯示檔案內容或串接多個檔案
cat file.txt

查看檔案內容

cat file1 file2

串接並輸出兩個檔案

cat file1 file2 > merged.txt

串接檔案並存到新檔案

cd 切換目前的工作目錄
cd /etc

前往絕對路徑 /etc

cd ~

前往家目錄

cd ..

上移一層目錄

cd -

回到上一個目錄

clear 清除終端螢幕
cp 複製檔案與目錄
cp file1.txt file2.txt

以新名稱複製檔案

cp -r dir1 dir2

遞迴複製目錄

cp -i file.txt /tmp/

覆蓋前先詢問確認

echo 輸出字串或環境變數
echo "Hello, World!"

輸出簡單字串

echo $HOME

顯示家目錄路徑

echo -e "1\t2\n3"

解析跳脫字元 ( )

history 顯示指令歷史
id 顯示目前使用者的 UID、GID 與群組
ls 列出檔案與目錄
ls -l

長格式清單,含權限與擁有者

ls -a

顯示隱藏檔

ls -lh

人類可讀的大小

mkdir 建立目錄
mkdir folder

建立單一目錄

mkdir -p a/b/c

建立巢狀目錄

mkdir dir{1,2,3}

一次建立多個目錄

mv 移動或重新命名檔案/目錄
mv oldname.txt newname.txt

重新命名檔案

mv file.txt /path/to/dir/

將檔案移至另一目錄

mv *.txt archive/

將所有 .txt 檔案移到 archive 資料夾

pwd 顯示目前工作目錄
pwd -P

顯示實體路徑(不含符號連結)

cd /tmp && pwd

切換到 /tmp 後顯示路徑

rm 刪除檔案或目錄
rm file.txt

刪除檔案

rm -i file.txt

刪除檔案並確認

rm -r folder/

遞迴刪除目錄

rm -rf folder/

強制刪除,不需確認

rmdir 刪除空目錄
rmdir emptydir

刪除 emptydir 目錄

touch 建立空檔案或更新修改時間
touch newfile.txt

不存在時建立新空檔

touch a b c

一次建立多個檔案

touch -c file.txt

僅更新時間,不會建立不存在的檔案

whereis 尋找指令的二進位、原始碼與說明文件
whereis ls

尋找 ls 的位置

whereis bash

顯示 Bash 執行檔與文件的路徑

whereis -b bash

僅搜尋二進位檔

which 顯示指令的可執行檔路徑
which python3

python3 的路徑

which grep

grep 的路徑

which --skip-alias ls

搜尋時略過別名

whoami 輸出有效使用者名稱

🔸 中階指令

指令

範例

說明

chmod 變更檔案或目錄的權限
chmod 755 file

以八進位表示法設定權限(如 755)

chmod +x script.sh

為腳本新增執行權限

chmod -R 644 dir/

遞迴設定目錄權限

chown 變更檔案擁有者與群組
chown user file

變更檔案擁有者

chown user:group file

同時變更擁有者與群組

chown -R user:group dir/

遞迴變更擁有者與群組

curl 從伺服器傳輸資料(HTTP、HTTPS 等)
curl -I https://example.com

發送 HEAD 請求(僅標頭)

curl -O https://example.com/file.txt

下載檔案並保留檔名

curl -d "a=1&b=2" -X POST URL

以表單資料發送 POST 請求

df 顯示檔案系統磁碟使用量
df -h

人類可讀的大小

df /home

特定掛載點的使用量

df -T

顯示檔案系統類型

diff 比較檔案或目錄
diff file1 file2

比較兩個檔案

diff -u old.c new.c

統一差異格式(修補檔風格)

diff -r dir1 dir2

遞迴目錄比較

du 估算檔案與目錄的磁碟使用量
du -sh *

顯示目前目錄下各項大小

du -h file.txt

顯示單一檔案大小

du -sh --max-depth=1 /var

彙總頂層子目錄大小

find 依名稱、大小、時間等搜尋檔案/目錄
find . -name "*.log"

尋找目前目錄下所有 .log 檔案

find / -type f -size +100M

尋找大於 100 MB 的檔案

find . -mtime -1

尋找一天內修改的檔案

free 顯示可用與已用記憶體
free -h

人類可讀的單位

free -m

以 MB 顯示

watch -n 2 free -h

每 2 秒更新一次輸出

grep 使用模式(正則表達式)搜尋文字
grep "error" logfile

尋找包含 error 的行

grep -r "error" /var/log

在目錄中遞迴搜尋

grep -i "fail" file

忽略大小寫搜尋

head 輸出檔案開頭內容
head -n 10 file

前 10 行

head -n 20 file.txt

前 20 行

head -c 100 file

前 100 位元組

hostname 顯示或設定系統主機名稱
hostname newname

暫時設定主機名稱,重啟後失效

hostname -I

顯示 IP 位址

kill 向程序發送訊號
kill -9 1234

依 PID 強制終止程序

kill -TERM 1234

以 SIGTERM 優雅地終止

pkill -f python

依模式終止程序

ping 用 ICMP 封包檢查網路連線
ping 8.8.8.8

Ping 一個位址

ping -c 4 ya.ru

傳送 4 個封包

ping -i 2 1.1.1.1

設定 2 秒間隔

ps 顯示程序狀態
ps aux

列出所有程序

ps -ef | grep nginx

grep 過濾名稱

ps -u $USER

顯示目前使用者的程序

rsync 快速的增量檔案傳輸
rsync -av src/ dst/

本地目錄同步

rsync -avz user@host:/src /dst

透過 SSH 與遠端主機同步

rsync --delete src/ dst/

刪除目標中不存在的檔案

scp 安全複製(遠端檔案複製程式)
scp file user@host:/path

將檔案複製到遠端主機

scp user@host:/file.txt .

從遠端主機複製檔案

scp -r dir user@host:/path

遞迴複製目錄

sort 排序文字行
sort file.txt

字母排序

sort -r file.txt

反向排序

sort -n numbers.txt

數字排序

tail 輸出檔案尾端並可持續追蹤
tail -f logfile.log

即時追蹤日誌

tail -n 20 file.txt

顯示最後 20 行

tail -c 100 file.txt

顯示最後 100 位元組

tar 建立、列出或解壓縮 tar 封存檔
tar -czf archive.tgz dir/

建立壓縮的 .tgz 封存檔

tar -xzf archive.tgz

解壓縮 .tgz 封存檔

tar -tf archive.tgz

列出封存內容

tee 從 stdin 讀取並同時輸出到 stdout 與檔案
echo "test" | tee out.txt

將輸出寫入 out.txt 並顯示

ls | tee list.txt

ls 輸出存到檔案並顯示

command | tee -a log.txt

將輸出附加到 log.txt

top 顯示 Linux 工作(互動式程序檢視器)
top

啟動 top

htop

替代互動檢視器 (htop)

top -o %MEM

依記憶體使用量排序

uptime 顯示系統運行時間
uptime -p

漂亮的 uptime 格式

uptime -s

顯示開機時間

wget 非互動式網路下載器
wget https://site.com/file.zip

透過 URL 下載檔案

wget -c file.zip

續傳中斷的下載

wget -O saved.txt URL

另存為不同檔名

wc 輸出檔案的行數、字數與位元組數
wc -l file

計算行數

wc -w file

計算字數

wc -m file

計算字元數

uniq 過濾重複行(相鄰的重複項)
uniq file.txt

移除相鄰重複

sort file | uniq

排序後移除重複

sort file | uniq -c

計算各行出現次數

yes 重複輸出字串直到被中斷;常用於腳本
yes "y" | command

對提示永遠回答 “y”

yes | rm -i *

自動確認互動式刪除

yes no | command

對提示回答 “no”

🔧 高階指令

指令

範例

說明

at 排程一次性指令在指定時間執行
at now + 1 minute

在 1 分鐘後執行指令

atq

列出待執行工作

atrm

刪除待執行工作

awk 模式掃描與處理語言
awk '{print $1}' file

輸出第一欄

ps aux | awk '$3 > 50'

依 CPU 使用率篩選程序

cat file.txt | awk '{print $2}'

輸出每行的第二欄

awk '/error/ {print $0}' logfile

輸出符合模式的行

crontab 安裝、列出或移除使用者的 cron 工作
crontab -e

編輯當前使用者的 crontab

crontab -l

列出 cron 工作

crontab -r

移除當前使用者的 crontab

cut 移除或選取檔案每行的部分內容
cut -d':' -f1 /etc/passwd

/etc/passwd 輸出使用者名稱

echo "a:b:c" | cut -d':' -f2

以 ‘:’ 為分隔符切出第二欄

cut -c1-5 filename

依位置選取字元

df 顯示檔案系統磁碟使用量
df -h

人類可讀的大小

df -T

顯示檔案系統類型

df /home

顯示家目錄的使用量

env 在修改後的環境中執行指令或顯示環境變數
env | grep PATH

顯示 PATH 條目

env -i bash

啟動一個乾淨的空環境 shell

export 設定目前 shell/工作階段的環境變數
export VAR=value

在此 shell 中設定變數

export PATH=$PATH:/new/path

將目錄附加到 PATH

export -p

列出已匯出的變數

free 顯示記憶體使用情況
free -m

以 MB 顯示

free -h

人類可讀單位

free -s 5

每 5 秒取樣一次

hostnamectl 查詢與變更系統主機名稱與相關設定
hostnamectl status

顯示主機名稱狀態

hostnamectl set-hostname newname

設定新的靜態主機名稱

ifconfig / ip 用於檢視/管理介面與位址的 IP 工具
ifconfig

顯示網路介面(舊版)

ip a

ip 顯示位址

ip link set eth0 up

啟用網路介面

iostat 顯示 CPU 與 I/O 統計
iostat -x 2

每 2 秒顯示詳細統計

iostat -d 5 3

裝置統計(5 秒間隔,共 3 次)

iptables IPv4 封包過濾與 NAT 管理工具
iptables -L

列出當前規則

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允許 22 埠的 SSH 連入

iptables -F

清除所有規則

journalctl 查詢 systemd 日誌
journalctl -xe

顯示近期錯誤與上下文

journalctl -u nginx.service

顯示指定服務的日誌

journalctl --since "2 hours ago"

顯示自相對時間以來的日誌

ln 建立檔案連結
ln -s target link

建立符號連結

ln file.txt backup.txt

建立硬連結

ln -sf target link

強制重建符號連結

sed 文字串流編輯器,用於過濾與轉換
sed 's/old/new/g' file

全域取代字串

sed -n '1,5p' file

僅輸出指定範圍行

sed '/pattern/d' file

刪除符合模式的行

systemctl 控制 systemd 系統與服務管理器
systemctl status nginx

顯示服務狀態

systemctl start nginx

啟動服務

systemctl enable nginx

開機時自動啟用服務

tr 轉換或刪除字元
tr a-z A-Z

將小寫轉換為大寫

echo "hello" | tr 'h' 'H'

取代字元

echo "abc123" | tr -d '0-9'

刪除數字

type 描述 shell 如何解析名稱
type ls

顯示 ls 如何解析

type cd

顯示 cd 如何解析

type python3

顯示 python3 如何解析

ulimit 取得或設定使用者程序資源限制
ulimit -n

顯示最大開啟檔案數

ulimit -c unlimited

啟用 core dumps

ulimit -u 4096

限制使用者程序數

uptime 顯示系統運行時間與平均負載
uptime -p

漂亮的 uptime 格式

uptime -s

顯示開機時間

xargs 從標準輸入構建並執行指令列
xargs -n 1 echo

將每個參數分行輸出

echo "a b c" | xargs -n 1

將單詞拆成個別參數

find . -name '*.txt' | xargs rm

尋找檔案並用 xargs 刪除

🌐 網路指令

指令

範例

說明

curl 向伺服器傳輸或接收資料
curl -X POST -d "a=1" URL

以表單資料發送 POST 請求

curl -I URL

僅擷取標頭

curl -o file.html URL

下載並儲存到檔案

dig DNS 查詢工具
dig openai.com

查詢 A 紀錄

dig +short openai.com

簡短回答

dig @8.8.8.8 openai.com

使用指定的 DNS 伺服器

ftp 檔案傳輸協定 (FTP) 用戶端
ftp host

連線到 FTP 伺服器

ftp -n host

不自動登入連線

ftp> get file.txt

在 FTP 工作階段下載檔案

ip address 顯示/操作 IP 位址
ip addr show eth0

顯示 eth0 的位址資訊

ip addr

列出所有位址

ip link 顯示/操作網路裝置
ip link show

顯示網路連結

ip link set eth0 up

啟用一個網路介面

ip route 顯示/操作 IP 路由表
ip route list

列出路由表

ip route add default via 192.168.1.1

新增預設路由

nc 建立或監聽任意 TCP/UDP 連線
nc -zv host 22

對主機進行埠掃描

nc -l 1234

在 TCP 埠上監聽

nc host 1234 < file

將檔案傳送到遠端埠

nmap 網路探索與安全/埠掃描工具
nmap -sP 192.168.1.0/24

Ping 掃描子網路

nmap -sV 192.168.1.1

服務/版本偵測

nmap -O 192.168.1.1

作業系統偵測

nslookup 查詢網際網路網域名稱伺服器
nslookup google.com

查詢網域名稱

nslookup 8.8.8.8

IP 反向查詢

ssh OpenSSH 遠端登入用戶端
ssh user@host

連線到主機

ssh -p 2222 user@host

使用非預設埠連線

ssh -i ~/.ssh/id_rsa user@host

使用指定的私鑰登入

ss 用於檢查 socket 的工具
ss -tuln

列出 TCP/UDP 監聽埠

ss -s

摘要統計

ss -l

列出監聽中的 socket

telnet TELNET 協定使用者介面
telnet host 80

連線到主機的 80 埠

telnet example.com 443

連線到 443

telnet localhost 25

連線到本地 SMTP

traceroute 追蹤到網路主機的路由
traceroute 8.8.8.8

追蹤到 IP 的路徑

traceroute -m 15 8.8.8.8

限制最大跳數

wget 從網路下載檔案
wget -O file.txt URL

將輸出儲存到檔案

wget URL

下載到目前目錄

wget -c URL

繼續部分下載

🔍 搜尋與管理檔案

指令

範例

說明

basename 去除路徑與副檔名
basename /path/to/file

從路徑中輸出檔名

basename /path/to/file .txt

去除檔名的副檔名

dirname 去除路徑的最後部分
dirname /path/to/file

顯示路徑中的目錄部分

dirname /etc/passwd

顯示 /etc/passwd 的父目錄

du 估算檔案空間使用量
du -sh folder/

顯示目錄大小

du -h *

顯示目前目錄中項目的大小

du -c folder1 folder2

多個目錄的累計大小

file 判斷檔案類型
file some.bin

偵測檔案類型

file *

偵測目錄中所有檔案類型

file -i file.txt

顯示 MIME 類型

find 搜尋檔案
find /path -type f -name "*.sh"

依名稱尋找 shell 腳本

find . -size +10M

尋找大於 10 MB 的檔案

find /tmp -mtime -1

尋找一天內修改的檔案

locate 使用資料庫依名稱尋找檔案
locate filename

尋找檔名

locate *.conf

萬用字元搜尋

locate -i README

忽略大小寫搜尋

realpath 輸出解析後的絕對路徑
realpath file

解析檔案路徑

realpath ../relative/path

解析相對路徑

stat 顯示檔案或檔案系統狀態
stat file

顯示檔案詳細狀態

stat -c %s file

僅輸出檔案大小

stat -f file

顯示檔案系統狀態

tree 以樹狀格式列出目錄內容
tree

輸出目錄樹

tree -L 2

限制顯示深度

tree -a

包含隱藏檔

📊 系統監控

指令

範例

說明

dmesg 輸出或控制核心環形緩衝區
dmesg | tail

顯示最後的核心訊息

dmesg | grep usb

僅篩選 USB 訊息

free 顯示記憶體使用量
free -h

人類可讀的單位

free -m

以 MB 顯示

htop 互動式程序檢視器
htop

執行 htop

iotop 顯示程序的 I/O 使用量
iotop

執行 iotop

iotop -o

僅顯示正在進行 I/O 的程序

lsof 列出開啟的檔案
lsof -i :80

顯示使用 80 埠的程序

lsof -u username

顯示使用者開啟的檔案

uptime 顯示系統運行時間與平均負載
vmstat 報告虛擬記憶體統計
vmstat 1

每秒更新一次

vmstat 5 3

每五秒顯示,共 3 次

watch 週期性執行程式並顯示輸出
watch -n 1 df -h

監看磁碟使用量

watch -d free -h

高亮差異並監看記憶體

📦 套件管理

指令

範例

說明

apt APT 套件管理器 (Debian/Ubuntu)
apt install curl

安裝套件

apt remove curl

移除套件

apt update && apt upgrade

更新套件清單並升級

dnf Dandified YUM (Fedora/RHEL 系列)
dnf install curl

安裝套件

dnf upgrade

升級套件

rpm RPM 套件管理器
rpm -ivh package.rpm

安裝 RPM 套件

rpm -e package

刪除套件

snap Snappy 套件管理器
snap install app

安裝 snap

snap remove app

移除 snap

yum Yellowdog Updater Modified (RHEL/CentOS)
yum install curl

安裝套件

yum remove curl

移除套件

💽 檔案系統

指令

範例

說明

blkid 定位/輸出區塊裝置屬性
blkid

列出區塊裝置與屬性

df 報告檔案系統磁碟使用量
df -Th

依類型顯示人類可讀的大小

fsck 檢查並修復 Linux 檔案系統
fsck /dev/sda1

檢查裝置

lsblk 列出區塊裝置的資訊
lsblk

以樹狀顯示裝置

mkfs 建立 Linux 檔案系統
mkfs.ext4 /dev/sdb1

建立 ext4 檔案系統

mount 掛載檔案系統
mount /dev/sdb1 /mnt

將裝置掛載到 /mnt

mount | grep /mnt

依路徑篩選已掛載的檔案系統

parted 分割區管理程式
parted /dev/sdb

打開磁碟進行分割

umount 卸載檔案系統
umount /mnt

卸載掛載點

🤖 腳本與自動化

指令

範例

說明

alias 定義或顯示 shell 別名
alias ll='ls -la'

建立方便的別名

alias

列出已定義的別名

bash / sh 執行 shell 腳本
bash script.sh

用 Bash 執行腳本

sh script.sh

sh 執行腳本

crontab 使用者專屬的 cron 排程表
crontab -e

編輯當前使用者的 crontab

read 在 shell 腳本中提示使用者輸入
read name

讀取到變數

set 設定 shell 選項/位置參數
set -e

遇到第一個錯誤時退出

source 在當前 shell 中讀取並執行檔案內容
source ~/.bashrc

重新載入 shell 設定

trap 捕捉訊號並執行指令
trap "echo 'exit'" EXIT

在 shell 結束時執行指令

🛠 開發與除錯

指令

範例

說明

gcc GNU C 編譯器
gcc main.c -o app

編譯 C 原始檔

gdb GNU 除錯器
gdb ./app

除錯已編譯的二進位檔

git 分散式版本控制系統
git status

顯示工作樹狀態

git commit -m "msg"

提交並附加訊息

ltrace 函式庫呼叫追蹤器
ltrace ./app

追蹤二進位檔的函式庫呼叫

make 程式建置工具
make

依 Makefile 進行建置

shellcheck Shell 腳本靜態分析工具
shellcheck script.sh

檢查 shell 腳本

strace 追蹤系統呼叫與訊號
strace ./app

追蹤程式的系統呼叫

valgrind 動態分析工具框架
valgrind ./app

在 Valgrind 下執行程式

vim / nano 命令列文字編輯器
vim file.sh

用 Vim 編輯

nano file.sh

用 Nano 編輯

📌 其他

指令

範例

說明

cal 顯示日曆
cal 2025

顯示全年日曆

cal 08 2025

顯示特定月份

date 顯示或設定系統日期與時間
date +%T

輸出目前時間 (HH:MM:SS)

date -d "next friday"

輸出相對日期

factor 整數質因數分解
factor 100

分解數字

man 格式化並顯示線上手冊頁
man tar

開啟手冊頁

man -k copy

依關鍵字搜尋手冊

man 5 passwd

開啟特定章節的手冊

seq 輸出數字序列
seq 1 5

從 1 數到 5

seq 1 2 9

自訂步長計數

seq -s ',' 1 5

以自訂分隔符號連接數字

yes 重複輸出字串直到中斷
yes | rm -r dir

自動確認遞迴刪除

📚 額外資源

📘 man 手冊 - 指令的詳細說明文件:

man ls
man rm

📙 TLDR - 常用指令的簡明使用範例:

🧠 提示: 安裝 tldr 以獲得小抄式幫助:

sudo apt install tldr   # 或:npm install -g tldr
tldr tar                # tar 指令的簡短摘要範例

🌐 實用連結

Linux 線上手冊頁 — 官方手冊,可依指令名稱搜尋:
https://man7.org/linux/man-pages/

簡化與社群驅動的手冊 — 提供實用範例的社群文件:
https://tldr.sh/