Linux 常用指令大全:新手必學指令完整一覽表
2023/12/14
2026/05/16
這份 Linux 常用指令大全,將所有必學指令依照功能分類整理,包含檔案管理、使用者管理、權限設定、套件管理、服務管理、網路指令與防火牆設定,並附上簡短說明與範例,適合 Linux 新手快速查詢,也適合有經驗的使用者作為速查表。
檔案與目錄操作
這是使用 Linux 最常接觸到的指令群組,幾乎所有操作都離不開這些基本指令。
目錄切換與查看
# 切換到指定目錄
cd /home/benz/projects
# 回到上一層目錄
cd ..
# 回到家目錄
cd ~
# 查看目前所在路徑
pwd
# 列出目前目錄的所有檔案和目錄
ls
# 列出指定路徑的內容
ls /var/log
# 以詳細格式列出(包含權限、擁有者、大小、日期)
ls -l
# 列出所有檔案,包含隱藏檔(以 . 開頭的檔案)
ls -a
# 結合兩個參數
ls -la
檔案操作
# 複製檔案
cp source.txt destination.txt
# 複製整個目錄(遞迴)
cp -r /source/dir /destination/dir
# 移動或重新命名檔案
mv old_name.txt new_name.txt
mv file.txt /home/benz/documents/
# 刪除檔案(不可復原,請謹慎)
rm file.txt
# 刪除目錄及其所有內容(非常危險!)
rm -rf /path/to/directory
# 建立空白檔案(或更新檔案的時間戳記)
touch new_file.txt
# 建立目錄
mkdir my_folder
# 建立多層目錄(如果中間路徑不存在也會一起建立)
mkdir -p /home/benz/projects/new_project
查看檔案內容
# 印出檔案的完整內容
cat file.txt
# 查看檔案前 10 行
head file.txt
# 查看檔案前 20 行
head -n 20 file.txt
# 查看檔案最後 10 行
tail file.txt
# 即時追蹤檔案末尾(常用於監看日誌)
tail -f /var/log/nginx/access.log
# 分頁方式瀏覽大型檔案(按 q 離開)
less large_file.txt
搜尋檔案
# 在指定目錄下搜尋檔案名稱
find /home/benz -name "*.txt"
# 搜尋超過 100MB 的檔案
find / -size +100M
# 搜尋最近 7 天修改過的檔案
find /var/log -mtime -7
# 使用 locate 快速搜尋(需要先執行 updatedb 建立索引)
locate nginx.conf
sudo updatedb # 更新 locate 索引資料庫
使用者管理
Linux 是多使用者系統,了解使用者相關指令有助於管理權限和安全性。
# 查看目前登入的使用者名稱
whoami
# 查看目前使用者和所屬群組的詳細資訊
id
# 查看目前的環境變數中的使用者
echo $USER
# 查看系統中所有使用者
cat /etc/passwd
# 暫時切換為 root 使用者(需要有 sudo 權限)
sudo su
# 切換到指定使用者
su username
# 建立新使用者
sudo useradd username
# 建立新使用者並同時建立家目錄
sudo useradd -m username
# 設定或更改使用者密碼
sudo passwd username
# 將使用者加入群組(-aG 表示附加到群組,不移除現有群組)
sudo usermod -aG sudo username
sudo usermod -aG docker username
# 修改使用者的登入 Shell
sudo usermod -s /bin/bash username
權限管理
Linux 的權限管理是系統安全的基礎,詳細說明請參考 Linux 群組權限管理教學。
# 查看檔案權限
ls -l file.txt
# 輸出範例:-rw-r--r-- 1 benz staff 1024 Dec 14 10:00 file.txt
# 用數字模式設定權限(755 = rwxr-xr-x)
chmod 755 script.sh
# 用符號模式設定權限
chmod u+x script.sh # 給擁有者加上執行權限
chmod g-w file.txt # 移除群組的寫入權限
chmod o=r file.txt # 設定其他人只有讀取權限
chmod a+r file.txt # 給所有人加上讀取權限
# 遞迴修改整個目錄的權限
chmod -R 755 /var/www/html
# 修改檔案的擁有者
sudo chown benz file.txt
# 同時修改擁有者和群組
sudo chown benz:developers file.txt
# 遞迴修改目錄
sudo chown -R benz:developers /home/benz/projects
# 修改群組
sudo chgrp developers file.txt
套件管理
不同的 Linux 發行版使用不同的套件管理工具。
Ubuntu / Debian(使用 apt)
# 更新套件清單(建議在安裝前先執行)
apt update
# 或加上 -y 自動確認
sudo apt -y update
# 升級所有已安裝的套件
sudo apt -y upgrade
# 安裝套件
sudo apt install nginx
sudo apt -y install openssh-server
# 移除套件(保留設定檔)
sudo apt remove nginx
# 移除套件並刪除設定檔
sudo apt purge nginx
# 搜尋套件
apt search keyword
# 查看套件詳細資訊
apt show nginx
Alpine Linux(使用 apk)
Alpine Linux 是輕量級 Linux 發行版,常用於 Docker 容器。
# 更新套件索引
apk update
# 升級所有已安裝的套件
apk upgrade
# 安裝套件
apk add vim
apk add openssh-server
apk add net-tools # 安裝 ifconfig 等網路工具
# 刪除套件
apk del package_name
# 列出所有已安裝的套件
apk info
# 搜尋套件
apk search keyword
服務管理
Ubuntu / Debian(使用 systemd)
現代 Linux 發行版(Ubuntu 16.04+)普遍使用 systemd 管理系統服務:
# 查看服務狀態
systemctl status nginx
# 啟動服務
sudo systemctl start nginx
# 停止服務
sudo systemctl stop nginx
# 重新啟動服務
sudo systemctl restart nginx
# 重新載入設定(不中斷服務)
sudo systemctl reload nginx
# 設定服務開機自動啟動
sudo systemctl enable nginx
# 取消開機自動啟動
sudo systemctl disable nginx
# 列出所有正在運行的服務
systemctl list-units --type=service --state=running
# SSH 服務管理範例
sudo apt -y install openssh-server
sudo systemctl start sshd
sudo systemctl enable ssh
Alpine Linux(使用 OpenRC)
Alpine Linux 使用 OpenRC 管理服務:
# 查看所有正在運行的服務
rc-status
# 列出所有服務
rc-status -a
# 列出所有服務和狀態
rc-status -s
# 列出所有可用的服務名稱
rc-service -l
# 啟動、停止、重啟服務
rc-service nginx start
rc-service nginx stop
rc-service nginx restart
# 新增到開機啟動
rc-update add nginx
# 從開機啟動移除
rc-update del nginx
網路相關
# 查看網路介面資訊(舊版指令)
ifconfig
# 查看網路介面資訊(新版指令)
ip addr
# 查看路由表
ip route
# 測試網路連線(Ctrl+C 停止)
ping google.com
# 只 ping 5 次
ping -c 5 google.com
# 追蹤封包路由路徑
traceroute google.com
# 下載檔案或測試 HTTP API
curl https://example.com
curl -o output.html https://example.com
# 下載檔案(wget 更適合用於下載大型檔案)
wget https://example.com/file.tar.gz
# 查看目前的網路連線(舊版)
netstat -tuln
# 查看目前的網路連線(新版,更推薦)
ss -tuln
# 只看監聽中的 TCP port
ss -tlnp
防火牆(ufw)
UFW(Uncomplicated Firewall)是 Ubuntu 上管理 iptables 防火牆的便利工具:
# 啟動防火牆
sudo ufw enable
# 關閉防火牆
sudo ufw disable
# 查看防火牆狀態(含規則編號)
sudo ufw status numbered
# 允許特定 port(例如開放 HTTP 80 port)
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22/tcp # 允許 SSH
# 允許特定服務名稱
sudo ufw allow ssh
sudo ufw allow http
# 拒絕特定 port
sudo ufw deny 8080
# 刪除規則(使用 status numbered 查到的編號)
sudo ufw delete 2
# 允許特定 IP 存取特定 port
sudo ufw allow from 192.168.1.100 to any port 22
# 重設所有規則(危險!)
sudo ufw reset
歷史紀錄
# 查看指令歷史紀錄(預設顯示最近 500 條)
history
# 查看最近 20 條指令
history 20
# 搜尋歷史紀錄(常用!)
history | grep nginx
history | grep apt
# 執行歷史紀錄中的第 N 條指令
!42
# 執行上一條指令
!!
# 清除目前 session 的歷史紀錄
history -c
常見問題(FAQ)
Q1:Ubuntu 用 apt,Alpine 用 apk,那 CentOS / RHEL 用什麼?
各大 Linux 發行版的套件管理工具:
| 發行版 | 套件管理工具 | 安裝指令範例 |
|---|---|---|
| Ubuntu / Debian | apt | sudo apt install nginx |
| Alpine | apk | apk add nginx |
| CentOS / RHEL 7 | yum | sudo yum install nginx |
| CentOS / RHEL 8+ | dnf | sudo dnf install nginx |
| Arch Linux | pacman | sudo pacman -S nginx |
Q2:什麼情況下要加 sudo?
sudo 讓一般使用者暫時以 root(超級管理員)的權限執行指令。以下情況通常需要 sudo:
- 安裝或移除系統套件(
sudo apt install ...) - 修改系統設定檔(
/etc/、/var/) - 管理系統服務(
sudo systemctl start ...) - 修改不屬於自己的檔案或目錄權限
- 管理使用者帳號(
sudo useradd ...)
一般操作自己家目錄(/home/username/)下的檔案則不需要 sudo。
延伸閱讀: