Linux 操作系統中有大量強大的命令行工具,下面我將分類介紹一些最常用的指令及其用法。
## 文件與目錄操作
### 1. ls - 列出目錄內容
```
ls [選項] [目錄名]
```
常用選項:
- `-l`:長格式顯示(詳細信息)
- `-a`:顯示所有文件(包括隱藏文件)
- `-h`:人類可讀的文件大小(配合 -l 使用)
- `-t`:按修改時間排序
- `-r`:反向排序
示例:
```bash
ls -lah /home ?# 顯示/home目錄下所有文件的詳細信息
```
### 2. cd - 切換目錄
```
cd [目錄路徑]
```
特殊路徑:
- `cd ~` 或 `cd`:返回用戶主目錄
- `cd ..`:返回上級目錄
- `cd -`:返回上一次所在的目錄
### 3. pwd - 顯示當前工作目錄
```
pwd
```
### 4. mkdir - 創建目錄
```
mkdir [選項] 目錄名
```
常用選項:
- `-p`:遞歸創建所需目錄結構
- `-m`:設置目錄權限
示例:
```bash
mkdir -p project/{src,doc,bin} ?# 創建project目錄及其子目錄
```
### 5. cp - 復制文件/目錄
```
cp [選項] 源文件 目標文件
cp [選項] 源文件... 目標目錄
```
常用選項:
- `-r`:遞歸復制目錄
- `-i`:覆蓋前提示
- `-u`:只復制更新的文件
- `-v`:顯示復制過程
示例:
```bash
cp -r /home/user/documents /backup/ ?# 遞歸復制目錄
```
### 6. mv - 移動/重命名文件
```
mv [選項] 源文件 目標文件
mv [選項] 源文件... 目標目錄
```
常用選項:
- `-i`:覆蓋前提示
- `-v`:顯示移動過程
示例:
```bash
mv oldname.txt newname.txt ?# 重命名文件
mv *.txt /target/dir/ ? ? ?# 移動所有txt文件
```
### 7. rm - 刪除文件/目錄
```
rm [選項] 文件...
```
常用選項:
- `-r`:遞歸刪除目錄
- `-f`:強制刪除,不提示
- `-i`:刪除前提示確認
示例:
```bash
rm -rf obsolete_dir/ ?# 強制遞歸刪除目錄(謹慎使用!)
```
### 8. find - 查找文件
```
find [路徑] [表達式]
```
常用表達式:
- `-name "pattern"`:按名稱查找
- `-type f/d`:查找文件/目錄
- `-mtime +n`:查找n天前修改的文件
- `-size +10M`:查找大于10MB的文件
- `-exec command {} \;`:對找到的文件執行命令
示例:
```bash
find /home -name "*.txt" -type f ?# 查找/home下所有txt文件
find . -mtime -7 -exec ls -l {} \; ?# 查找7天內修改的文件并列出詳細信息
```
### 9. grep - 文本搜索
```
grep [選項] 模式 [文件...]
```
常用選項:
- `-i`:忽略大小寫
- `-r`:遞歸搜索目錄
- `-n`:顯示行號
- `-v`:反向匹配(不包含模式的行)
- `-l`:只顯示包含匹配的文件名
- `-E`:使用擴展正則表達式
示例:
```bash
grep -rn "error" /var/log/ ?# 遞歸搜索/var/log/中包含"error"的行
ps aux | grep sshd ? ? ? ? ?# 過濾包含sshd的進程
```
## 文件內容查看與處理
### 10. cat - 連接并顯示文件內容
```
cat [選項] [文件...]
```
常用選項:
- `-n`:顯示行號
- `-b`:顯示非空行行號
示例:
```bash
cat file1 file2 > combined ?# 合并文件
cat -n /etc/passwd ? ? ? ? # 顯示帶行號的文件內容
```
### 11. less/more - 分頁查看文件
```
less [選項] 文件名
more [選項] 文件名
```
常用操作(less中):
- 空格:下一頁
- b:上一頁
- /pattern:搜索
- q:退出
### 12. head/tail - 查看文件開頭/結尾
```
head [選項] 文件
tail [選項] 文件
```
常用選項:
- `-n NUM`:顯示NUM行(默認10)
- `-f`:跟蹤文件變化(常用于日志)
示例:
```bash
head -n 20 largefile.log ?# 顯示文件前20行
tail -f /var/log/syslog ? # 實時查看日志更新
```
### 13. wc - 統計文件內容
```
wc [選項] 文件
```
常用選項:
- `-l`:行數
- `-w`:單詞數
- `-c`:字節數
- `-m`:字符數
示例:
```bash
wc -l access.log ?# 統計文件行數
```
### 14. sort - 排序文件內容
```
sort [選項] 文件
```
常用選項:
- `-n`:按數值排序
- `-r`:逆序排序
- `-k N`:按第N列排序
- `-u`:去重
示例:
```bash
sort -nrk 3 data.txt ?# 按第三列數值逆序排序
```
### 15. uniq - 報告或忽略重復行
```
uniq [選項] [輸入文件 [輸出文件]]
```
常用選項:
- `-c`:統計重復次數
- `-d`:只顯示重復行
- `-u`:只顯示不重復行
通常與sort配合使用:
```bash
sort file.txt | uniq -c ?# 統計每行出現次數
```
### 16. cut - 提取文件列
```
cut [選項] 文件
```
常用選項:
- `-d DELIM`:指定分隔符(默認為制表符)
- `-f LIST`:選擇指定字段
示例:
```bash
cut -d: -f1,7 /etc/passwd ?# 提取用戶名和登錄shell
```
### 17. sed - 流編輯器
```
sed [選項] '命令' 文件
```
常用命令:
- `s/pattern/replacement/`:替換
- `d`:刪除行
- `p`:打印行
示例:
```bash
sed 's/foo/bar/g' file.txt ?# 全局替換foo為bar
sed -i.bak 's/old/new/' file ?# 直接修改文件并備份
```
### 18. awk - 文本處理工具
```
awk '模式 {動作}' 文件
```
常用變量:
- `$0`:整行
- `$1,$2,...`:第1,2,...字段
- `NF`:字段數
- `NR`:當前行號
示例:
```bash
awk -F: '{print $1, $7}' /etc/passwd ?# 同cut示例
awk '$3 > 100 {print $0}' data.txt ?# 打印第三列大于100的行
```
## 系統信息與進程管理
### 19. ps - 顯示進程狀態
```
ps [選項]
```
常用選項組合:
- `aux`:顯示所有用戶的所有進程
- `-ef`:全格式列表
示例:
```bash
ps aux | grep nginx ?# 查找nginx進程
```
### 20. top/htop - 動態顯示進程信息
```
top
htop ?# 需要安裝,功能更強大
```
常用操作:
- q:退出
- k:殺死進程(輸入PID)
- M:按內存排序
- P:按CPU排序
### 21. kill - 終止進程
```
kill [選項] PID...
killall [選項] 進程名...
```
常用選項:
- `-9`:強制終止(SIGKILL)
- `-15`:正常終止(SIGTERM,默認)
示例:
```bash
kill -9 1234 ?# 強制終止PID為1234的進程
killall -u username ?# 終止某用戶的所有進程
```
### 22. free - 顯示內存使用情況
```
free [選項]
```
常用選項:
- `-h`:人類可讀格式
- `-m`:以MB為單位
示例:
```bash
free -h ?# 顯示易讀的內存信息
```
### 23. df - 顯示磁盤空間
```
df [選項] [文件...]
```
常用選項:
- `-h`:人類可讀格式
- `-T`:顯示文件系統類型
示例:
```bash
df -hT ?# 顯示所有掛載點的磁盤使用情況
```
### 24. du - 估算文件/目錄空間使用
```
du [選項] [文件...]
```
常用選項:
- `-h`:人類可讀格式
- `-s`:只顯示總計
- `--max-depth=N`:顯示N級子目錄
示例:
```bash
du -sh /var/log/ ?# 顯示/var/log/的總大小
```
### 25. uname - 顯示系統信息
```
uname [選項]
```
常用選項:
- `-a`:顯示所有信息
- `-r`:內核版本
- `-m`:機器硬件名稱
示例:
```bash
uname -a ?# 顯示所有系統信息
```
### 26. uptime - 顯示系統運行時間
```
uptime
```
輸出示例:
```
10:30:45 up 15 days, ?3:25, ?2 users, ?load average: 0.15, 0.10, 0.05
```
## 網絡相關
### 27. ifconfig/ip - 網絡接口配置
```
ifconfig [接口] [選項] ?# 傳統命令
ip addr show ? ? ? ? ?# 現代替代命令
```
示例:
```bash
ifconfig eth0 ?# 顯示eth0接口信息
ip a ? ? ? ? ?# 顯示所有接口信息
```
### 28. ping - 測試網絡連通性
```
ping [選項] 主機名/IP
```
常用選項:
- `-c N`:發送N個包后停止
- `-i N`:設置間隔N秒
示例:
```bash
ping -c 4 google.com ?# 向google.com發送4個ping包
```
### 29. netstat/ss - 網絡統計信息
```
netstat [選項] ?# 傳統命令
ss [選項] ? ? ? # 現代替代命令
```
常用選項:
- `-t`:TCP連接
- `-u`:UDP連接
- `-l`:監聽端口
- `-p`:顯示進程信息
- `-n`:數字形式顯示地址
示例:
```bash
ss -tulnp ?# 顯示所有監聽端口及相關進程
```
### 30. traceroute/tracepath - 跟蹤路由路徑
```
traceroute 主機名/IP
tracepath 主機名/IP ?# 不需要root權限
```
### 31. wget/curl - 下載工具
```
wget [選項] URL
curl [選項] URL
```
常用選項:
- `-O`:保存到文件(wget)
- `-o FILE`:保存到文件(curl)
- `-L`:跟隨重定向
示例:
```bash
wget https://example.com/file.zip
curl -o file.zip https://example.com/file.zip
```
### 32. ssh - 安全遠程登錄
```
ssh [選項] 用戶名@主機 [命令]
```
常用選項:
- `-p 端口`:指定端口
- `-i 密鑰文件`:使用指定密鑰
示例:
```bash
ssh user@example.com
ssh -p 2222 user@example.com 'ls -l /tmp'
```
## 權限管理
### 33. chmod - 更改文件權限
```
chmod [選項] 模式 文件...
```
模式格式:
- 數字模式:如 `755`
- 符號模式:如 `u+x,g-w,o=r`
示例:
```bash
chmod 755 script.sh ?# rwxr-xr-x
chmod +x script.sh ? # 添加執行權限
```
### 34. chown - 更改文件所有者
```
chown [選項] 用戶[:組] 文件...
```
常用選項:
- `-R`:遞歸更改
示例:
```bash
chown user:group file.txt ?# 更改所有者和組
chown -R www-data:www-data /var/www ?# 遞歸更改
```
### 35. passwd - 更改用戶密碼
```
passwd [用戶名] ?# 無參數更改當前用戶密碼
```
## 壓縮與歸檔
### 36. tar - 歸檔工具
```
tar [選項] 文件...
```
常用選項:
- `-c`:創建歸檔
- `-x`:提取歸檔
- `-v`:顯示過程
- `-f FILE`:指定歸檔文件
- `-z`:gzip壓縮/解壓
- `-j`:bzip2壓縮/解壓
- `-J`:xz壓縮/解壓
示例:
```bash
tar -czvf archive.tar.gz dir/ ?# 創建gzip壓縮的歸檔
tar -xzvf archive.tar.gz ? ? ?# 解壓gzip歸檔
```
### 37. gzip/gunzip - 壓縮/解壓
```
gzip [選項] 文件...
gunzip [選項] 文件...
```
常用選項:
- `-d`:解壓(gzip)
- `-k`:保留原文件
- `-9`:最大壓縮
示例:
```bash
gzip -9 largefile.log ?# 最大壓縮
gunzip largefile.log.gz ?# 解壓
```
### 38. zip/unzip - ZIP壓縮/解壓
```
zip [選項] 壓縮包名 文件...
unzip [選項] 壓縮包名
```
常用選項:
- `-r`:遞歸壓縮目錄
- `-d 目錄`:指定解壓目錄
示例:
```bash
zip -r archive.zip dir/
unzip archive.zip -d target_dir/
```
## 系統管理
### 39. sudo - 以超級用戶權限執行命令
```
sudo [選項] 命令
```
常用選項:
- `-i`:切換到root shell
- `-u 用戶`:以指定用戶身份執行
### 40. su - 切換用戶
```
su [選項] [用戶名]
```
無參數時切換到root
### 41. useradd/userdel - 添加/刪除用戶
```
useradd [選項] 用戶名
userdel [選項] 用戶名
```
常用選項:
- `-m`:創建用戶主目錄
- `-G 組`:指定附加組
- `-r`:刪除用戶時同時刪除主目錄
示例:
```bash
useradd -m -G sudo newuser ?# 創建有sudo權限的用戶
userdel -r olduser ? ? ? ? ?# 刪除用戶及其主目錄
```
### 42. groupadd/groupdel - 添加/刪除組
```
groupadd [選項] 組名
groupdel 組名
```
### 43. crontab - 定時任務管理
```
crontab [選項]
```
常用選項:
- `-e`:編輯當前用戶的crontab
- `-l`:列出當前用戶的crontab
- `-r`:刪除當前用戶的crontab
### 44. systemctl - 系統服務管理
```
systemctl [命令] [服務]
```
常用命令:
- `start`:啟動服務
- `stop`:停止服務
- `restart`:重啟服務
- `status`:查看服務狀態
- `enable`:設置開機啟動
- `disable`:禁止開機啟動
示例:
```bash
systemctl status nginx ?# 查看nginx狀態
systemctl restart apache2 ?# 重啟apache
```
## 其他實用命令
### 45. alias - 創建命令別名
```
alias 別名='命令'
```
示例:
```bash
alias ll='ls -alF'
```
### 46. history - 查看命令歷史
```
history [選項]
```
常用選項:
- `-c`:清除歷史
- `-d N`:刪除第N條歷史
常用操作:
- `!N`:執行歷史中第N條命令
- `!!`:執行上一條命令
- `!str`:執行最近以str開頭的命令
### 47. which/whereis - 查找命令位置
```
which 命令
whereis [選項] 命令
```
whereis選項:
- `-b`:只查找二進制文件
- `-m`:只查找手冊頁
### 48. man - 查看命令手冊
```
man [章節] 命令
```
常用章節:
- 1:用戶命令
- 5:文件格式
- 8:管理員命令
### 49. ln - 創建鏈接
```
ln [選項] 源文件 目標文件
```
常用選項:
- `-s`:創建符號鏈接
- `-f`:強制創建
示例:
```bash
ln -s /path/to/file linkname ?# 創建符號鏈接
```
### 50. dd - 磁盤/文件轉換與復制
```
dd [選項]
```
常用選項:
- `if=FILE`:輸入文件
- `of=FILE`:輸出文件
- `bs=N`:塊大小
- `count=N`:復制N個塊
示例:
```bash
dd if=/dev/sda of=disk.img bs=4M ?# 創建磁盤映像
dd if=/dev/zero of=/swapfile bs=1M count=1024 ?# 創建1GB交換文件
```
## 總結
以上是Linux中最常用的50個命令及其主要用法。掌握這些命令可以完成大多數日常系統管理任務。要深入了解每個命令,可以使用`man 命令名`查看完整手冊。隨著使用經驗的積累,你會發現Linux命令行工具的強大和高效。