為什麼要學習 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 命令,你就能高效地管理系統和處理各種任務!