為什麼要學習 Linux 命令列?

Linux 命令列是系統管理員和開發者必備的技能,它提供了:

  • 高效率 - 快速執行複雜任務
  • 自動化 - 編寫腳本自動化工作流程
  • 遠端管理 - 透過 SSH 管理遠端伺服器
  • 資源控制 - 精確控制系統資源

檔案與目錄操作

基本導航

# 顯示當前目錄
pwd

# 列出檔案和目錄
ls -la

# 切換目錄
cd /path/to/directory
cd ~  # 回到家目錄
cd -  # 回到上一個目錄

# 創建目錄
mkdir new_directory
mkdir -p parent/child/grandchild  # 遞迴創建

# 刪除目錄
rmdir empty_directory  # 只能刪除空目錄
rm -rf directory_name  # 強制刪除目錄及內容

檔案操作

# 創建空檔案
touch new_file.txt

# 複製檔案
cp source.txt destination.txt
cp -r source_dir dest_dir  # 複製目錄

# 移動/重新命名檔案
mv old_name.txt new_name.txt
mv file.txt /path/to/destination/

# 刪除檔案
rm file.txt
rm -i file.txt  # 互動式刪除(會詢問)

檔案內容查看

查看檔案內容

# 顯示整個檔案
cat filename.txt

# 分頁顯示
less filename.txt
more filename.txt

# 顯示前/後幾行
head -n 10 filename.txt  # 前10行
tail -n 10 filename.txt  # 後10行
tail -f logfile.txt      # 持續監控檔案變化

搜尋和過濾

# 在檔案中搜尋文字
grep "pattern" filename.txt
grep -r "pattern" directory/  # 遞迴搜尋
grep -i "pattern" filename.txt  # 忽略大小寫

# 計算行數、字數
wc -l filename.txt  # 行數
wc -w filename.txt  # 字數
wc -c filename.txt  # 字元數

系統資訊與監控

系統狀態

# 系統資訊
uname -a        # 系統詳細資訊
whoami          # 當前使用者
id              # 使用者和群組資訊
uptime          # 系統運行時間

# 硬體資訊
free -h         # 記憶體使用情況
df -h           # 磁碟使用情況
du -sh directory/  # 目錄大小

行程管理

# 查看行程
ps aux          # 所有行程
ps aux | grep nginx  # 搜尋特定行程
top             # 即時行程監控
htop            # 更好用的 top (需安裝)

# 終止行程
kill PID        # 終止指定行程
killall process_name  # 終止所有同名行程
kill -9 PID     # 強制終止行程

網路操作

網路診斷

# 測試連線
ping google.com
ping -c 4 google.com  # 只 ping 4 次

# 查看網路介面
ifconfig        # 網路介面資訊
ip addr show    # 現代化的網路介面查看

# 檢查連接埠
netstat -tulpn  # 查看監聽的連接埠
ss -tulpn       # 現代化的 netstat

# 下載檔案
wget https://example.com/file.zip
curl -O https://example.com/file.zip

檔案權限與使用者管理

權限管理

# 查看權限
ls -l filename.txt

# 修改權限
chmod 755 script.sh    # 數字方式
chmod +x script.sh     # 符號方式,添加執行權限
chmod -w filename.txt  # 移除寫入權限

# 修改擁有者
chown user:group filename.txt
chown -R user:group directory/

使用者切換

# 切換使用者
su username
su -            # 切換到 root
sudo command    # 以管理員權限執行命令

文字處理工具

強大的文字處理

# 排序
sort filename.txt
sort -n numbers.txt  # 數字排序
sort -r filename.txt # 反向排序

# 去除重複行
uniq filename.txt
sort filename.txt | uniq  # 先排序再去重

# 文字替換
sed 's/old/new/g' filename.txt        # 替換文字
sed -i 's/old/new/g' filename.txt     # 直接修改檔案

# 欄位處理
cut -d',' -f1,3 csv_file.csv          # 提取第1和第3欄
awk '{print $1, $3}' filename.txt     # 列印第1和第3個欄位

壓縮與解壓縮

常用壓縮格式

# tar 壓縮
tar -czf archive.tar.gz directory/     # 創建 gzip 壓縮檔
tar -xzf archive.tar.gz                # 解壓縮 gzip

# zip 壓縮
zip -r archive.zip directory/          # 創建 zip 檔案
unzip archive.zip                      # 解壓縮 zip

實用技巧

歷史命令

# 查看命令歷史
history

# 重複執行命令
!!              # 重複上一個命令
!n              # 重複第 n 個命令
!string         # 重複最近以 string 開頭的命令

輸出重導向

# 重導向輸出
command > output.txt        # 覆寫檔案
command >> output.txt       # 附加到檔案
command 2> error.txt        # 重導向錯誤輸出
command > output.txt 2>&1   # 重導向所有輸出

# 管道操作
ls -la | grep "\.txt"       # 列出 .txt 檔案
ps aux | grep nginx | wc -l # 計算 nginx 行程數量

找檔案

# 尋找檔案
find /path -name "*.txt"           # 按名稱尋找
find /path -type f -size +100M     # 尋找大於100MB的檔案
find /path -mtime -7               # 尋找7天內修改的檔案

# 快速定位
which command                      # 找出命令的位置
whereis command                    # 找出命令及相關檔案位置

進階技巧

背景執行

# 背景執行命令
command &                          # 在背景執行
nohup command &                    # 不受終端關閉影響

# 查看背景工作
jobs                               # 列出工作
fg %1                              # 將工作1調到前景
bg %1                              # 將工作1調到背景

螢幕會話

# 使用 screen 或 tmux
screen -S session_name             # 創建新會話
screen -r session_name             # 重新連接會話
tmux new -s session_name           # 創建 tmux 會話
tmux attach -t session_name        # 連接 tmux 會話

掌握這些 Linux 命令,你就能高效地管理系統和處理各種任務!