🐧 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 (補丁格式)

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 互動式顯示系統程序
top

啟動 top

htop

替代檢視器 htop

top -o %MEM

依記憶體排序

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

美化顯示

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

啟用核心傾印

ulimit -u 4096

限制使用者程序數

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

美化顯示

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

列出監聽的 sockets

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 頁面

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 線上 man 頁面 — 官方手冊,可依指令名稱搜尋:
https://man7.org/linux/man-pages/

簡化與社群維護的 man 頁面 — 社群驅動的實用範例:
https://tldr.sh/