Linux 常用指令大全:新手必學指令完整一覽表

2023/12/14 2026/05/16
Linux 常用指令大全:新手必學指令完整一覽表

這份 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。


延伸閱讀:

BenZ Software Developer

熱愛技術的軟體開發者,在這裡分享程式開發經驗與學習筆記。