Linux中最全常用命令速查表(建議收藏備用)
一、Linux 系統(tǒng)目錄結構
Linux 采用樹狀目錄結構,根目錄為 /,所有文件和目錄都從根目錄出發(fā):
/
├── bin -> usr/bin # 存放二進制命令(ls、cp、mv等常用命令)
├── boot # 內核及引導系統(tǒng)程序所在目錄
├── dev # 所有設備文件的目錄(磁盤、光驅等)
├── etc # 配置文件默認路徑、服務啟動命令存放目錄
├── home # 用戶家目錄(root用戶的家目錄為/root)
├── lib -> usr/lib # 32位庫文件存放目錄
├── lib64 -> usr/lib64 # 64位庫文件存放目錄
├── media # 媒體文件存放目錄
├── mnt # 臨時掛載設備目錄
├── opt # 自定義軟件安裝存放目錄
├── proc # 進程及內核信息存放目錄(虛擬文件系統(tǒng))
├── root # root用戶家目錄
├── run # 系統(tǒng)運行時產生臨時文件的存放目錄
├── sbin -> usr/sbin # 系統(tǒng)管理命令存放目錄(僅管理員使用)
├── srv # 服務啟動后需要訪問的數(shù)據(jù)目錄
├── sys # 系統(tǒng)使用目錄
├── tmp # 臨時文件目錄
├── usr # 系統(tǒng)命令和幫助文件目錄
└── var # 存放內容易變文件的目錄(日志、郵件等)
重要目錄說明:
| 目錄 | 說明 |
|---|---|
/bin | 二進制執(zhí)行文件,主要用于具體應用 |
/sbin | 系統(tǒng)管理員專用的二進制代碼,主要用于系統(tǒng)管理 |
/usr/bin | 用戶命令,后期安裝的軟件 |
/usr/sbin | 超級用戶管理程序 |
二、終端命令格式
2.1 基本語法
command [-options] [parameter]
| 組成部分 | 說明 |
|---|---|
command | 命令名,對應功能的英文單詞或縮寫 |
[-options] | 選項,用于控制命令行為,可省略 |
[parameter] | 傳給命令的參數(shù),可以是零個、一個或多個 |
2.2 查閱命令幫助
command --help # 顯示命令的幫助信息(簡潔版) man command # 查閱命令的完整使用手冊(manual)
man 手冊操作鍵:
| 操作鍵 | 功能 |
|---|---|
| 空格鍵 | 向下翻頁 |
b | 向上翻頁 |
q | 退出 |
/關鍵詞 | 搜索關鍵詞 |
2.3 實用快捷鍵
| 快捷鍵 | 功能 |
|---|---|
Tab | 自動補全文件/目錄/命令(非常常用?。?/td> |
↑ / ↓ 方向鍵 | 在歷史命令間切換 |
Ctrl + C | 強制中斷當前程序/命令 |
Ctrl + Z | 掛起當前任務(任務未結束,可用 fg/bg 恢復) |
Ctrl + Shift + = | 放大終端窗口字體 |
Ctrl + - | 縮小終端窗口字體 |
三、目錄操作命令
3.1 查看目錄內容 ——ls
ls 是 list 的簡寫,列出目錄內容
ls # 列出當前目錄內容 ls -a # 顯示所有文件,包括隱藏文件(以.開頭) ls -l # 以列表方式顯示文件詳細信息(可簡寫為 ll) ls -lh # 以列表方式顯示,并以人性化方式顯示文件大小 ls -al # 組合:顯示所有文件+詳細信息 ll # 等同于 ls -l(很多發(fā)行版支持)
Linux 文件和目錄特點:
- 文件或目錄名最長可有 256 個字符
- 以
.開頭的文件為隱藏文件,需用-a參數(shù)顯示 .代表當前目錄,..代表上一級目錄- 所有目錄和文件名大小寫敏感
ls 通配符:
| 通配符 | 含義 |
|---|---|
* | 代表任意個數(shù)個字符 |
? | 代表任意一個字符(至少1個) |
[abc] | 匹配 a、b、c 中的任意一個 |
[a-f] | 匹配 a 到 f 范圍內的任意一個字符 |
3.2 切換目錄 ——cd
cd 是 change directory 的簡寫
pwd # 查看當前工作目錄(print work directory) cd # 切換到當前用戶主目錄(/home/用戶名) cd ~ # 切換到當前用戶主目錄 cd / # 切換到根目錄 cd .. # 切換到上一級目錄 cd - # 切換到上一次訪問的目錄(在兩個目錄間來回切換) cd /usr/local # 切換到指定絕對路徑 cd ./aaa # 切換到當前目錄下的 aaa 目錄(相對路徑)
路徑說明:
- 相對路徑:最前面不是
/或~,相對于當前目錄 - 絕對路徑:最前面是
/或~,從根目錄/家目錄開始
3.3 創(chuàng)建目錄 ——mkdir
mkdir aaa # 在當前目錄下創(chuàng)建 aaa 目錄
mkdir ./bbb # 同上(相對路徑寫法)
mkdir /ccc # 在根目錄下創(chuàng)建 ccc 目錄(絕對路徑)
mkdir -p temp/nginx # 遞歸創(chuàng)建多級目錄(-p 選項)
mkdir {dirA,dirB} # 批量創(chuàng)建多個目錄
?? 新建目錄名稱不能與當前目錄中已有的目錄或文件同名
3.4 查看目錄樹 ——tree
tree # 以樹狀圖顯示當前目錄結構 tree -d # 只顯示目錄,不顯示文件 tree /usr/local # 查看指定目錄的樹狀結構 tree test01/ # 查看 test01 目錄的樹狀結構
3.5 搜索文件/目錄 ——find
find / -name 'b' # 從根目錄搜索名為 b 的目錄和文件
find / -name 'b*' # 從根目錄搜索名以 b 開頭的目錄和文件
find . -name 'b' # 從當前目錄搜索名為 b 的目錄和文件
find -name "*.py" # 搜索當前目錄下所有 .py 文件(含子目錄)
find -name "*1*" # 搜索文件名包含 1 的文件
find . -name '*.pyc' -exec rm -rf {} \; # 遞歸刪除所有 .pyc 文件
find . -name "*" -size 145800c -print # 打印當前目錄下指定大小的文件
find . -type f -name "*.log" # 只搜索文件類型(不包括目錄)
3.6 移動與重命名 ——mv
mv 原名稱 新名稱 # 重命名(當前目錄內) mv tomcat001 tomcat # 將 tomcat001 重命名為 tomcat mv /aaa /bbb # 將根目錄下的 aaa 移動到 bbb 目錄下 mv bbbb usr/bbb # 移動并修改名稱為 bbb mv bbb usr/aaa # 移動并修改名稱為 aaa
-i 選項:覆蓋文件前提示確認
3.7 復制目錄 ——cp
cp -r /aaa /bbb # 將 /aaa 目錄復制到 /bbb 下(保持名稱 aaa) cp -r /aa /bbb/aaa # 將 /aa 復制到 /bbb 下,名稱改為 aaa cp -i 源文件 目標文件 # 覆蓋前提示
復制目錄必須加 -r 選項(遞歸復制)
3.8 刪除目錄 ——rm/rmdir
rm -r /bbb # 刪除 /bbb 目錄(會逐一詢問) rm -rf /bbb # 強制刪除 /bbb 目錄(包含子目錄,不提示) rmdir test01 # 刪除空目錄
rm -rf 操作不可恢復,使用時務必謹慎!
3.9 軟鏈接 ——ln
ln -s /usr/local/app /data # 創(chuàng)建軟鏈接(類似 Windows 快捷方式) rm -rf /data # 刪除軟鏈接(路徑末尾不加 /)
注意事項:
- 沒有
-s建立的是硬鏈接,工作中幾乎不用 - 源文件路徑建議使用絕對路徑,避免移動鏈接后失效
- Linux 中,只有文件硬鏈接數(shù) == 0 時文件才會被刪除
四、文件操作命令
4.1 創(chuàng)建文件 ——touch
touch testFile # 創(chuàng)建新文件(文件不存在則創(chuàng)建)
touch dirA/{A1,A2,A3} # 在 dirA 目錄中批量創(chuàng)建 A1、A2、A3 三個文件
若文件已存在,則修改文件的末次修改時間(不改變內容)
4.2 刪除文件 ——rm
rm -r a.java # 刪除 a.java(每次詢問) rm -rf a.java # 強制刪除 a.java(不詢問) rm -rf ./a* # 強制刪除當前目錄下所有以 a 開頭的文件 rm -rf ./* # 強制刪除當前目錄下所有文件(極度危險?。?
4.3 文件拆分 ——split
split -b 10k date.file # 按大小分割(每份10KB,字母后綴) split -b 10k date.file -d -a 3 # 使用數(shù)字后綴,長度為3位 split -b 10k date.file -d -a 3 split_file # 指定輸出文件名前綴 split -l 10 date.file # 按行數(shù)分割(每份10行)
split 參數(shù)說明:
| 參數(shù) | 說明 |
|---|---|
-b | 每個輸出文件的大?。▎挝唬篵yte,可用 k/m) |
-l | 每個輸出文件的行數(shù) |
-d | 使用數(shù)字作為文件后綴 |
-a | 指定后綴長度(默認為2) |
4.4 跨服務器文件復制 ——scp
# 將本機文件復制到目標服務器 scp /home/user/file.txt user@192.168.1.100:/home/user/ # 將遠程服務器文件復制到本機 scp user@192.168.1.100:/home/user/file.txt /home/user/ # 復制目錄(-r 選項) scp -r demo user@192.168.1.100:Desktop # 指定端口(-P 大寫) scp -P 2222 01.py user@remote:Desktop/01.py
scp 選項說明:
| 選項 | 含義 |
|---|---|
-r | 遞歸復制目錄 |
-P | 指定端口號(注意是大寫 P) |
五、文件內容查看與編輯
5.1 查看文件內容
cat a.java # 查看文件全部內容(適合內容較少的文件) cat -n a.java # 查看文件內容,并對所有行編號 cat -b a.java # 查看文件內容,只對非空行編號 more a.java # 分屏顯示(空格翻頁,Enter翻行,q退出) less a.java # 分屏顯示,支持上下翻頁(PageUp/PageDown),q退出 head a.java # 查看文件前10行 head -n 7 a.java # 查看文件前7行 tail a.java # 查看文件后10行 tail -n 7 a.java # 查看文件后7行 tail -f a.java # 實時查看文件末尾新增內容(常用于查看日志)
more 操作鍵詳解:
| 操作鍵 | 功能 |
|---|---|
| 空格鍵 | 顯示下一屏 |
| Enter | 一次滾動一行 |
b | 回滾一屏 |
f | 前滾一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
more 和 less 的區(qū)別:
| 對比項 | more | less |
|---|---|---|
| 翻頁方向 | 只能向后 | 可前后翻頁 |
| 加載速度 | 需讀整個文件 | 按需加載,更快 |
| 退出后顯示 | 內容殘留在終端 | 退出后清屏 |
| 上下鍵 | 不支持 | 支持 |
5.2 文件內搜索 ——grep
grep 是 Global Regular Expression Print 的縮寫,強大的文本搜索工具
grep "start" test* # 在 test 開頭的文件中查找含 start 的行 grep under 123.txt # 搜索 under 字符串(大小寫敏感) grep -n under 123.txt # 搜索并顯示行號 grep -v under 123.txt # 顯示不包含 under 的行(取反) grep -i under 123.txt # 搜索(忽略大小寫) grep -ni under 123.txt # 忽略大小寫,并顯示行號 grep -A 1 -B 1 "https" wget-log # 顯示匹配行及其前1行(-B)、后1行(-A) grep "^root" /etc/passwd # 搜索以 root 開頭的行 grep "bash$" /etc/passwd # 搜索以 bash 結尾的行
grep 常用選項:
| 選項 | 含義 |
|---|---|
-n | 顯示匹配行及行號 |
-v | 顯示不包含匹配文本的所有行(取反) |
-i | 忽略大小寫 |
-A N | 顯示匹配行及其后 N 行 |
-B N | 顯示匹配行及其前 N 行 |
5.3 重定向
echo 'Hello World' > /root/test.txt # 覆蓋寫入(文件不存在則創(chuàng)建) echo 'Hello World' >> /root/test.txt # 追加寫入
| 符號 | 含義 |
|---|---|
> | 輸出重定向,覆蓋文件原有內容 |
>> | 輸出重定向,追加到文件末尾 |
六、文本處理三劍客
6.1 awk —— 數(shù)據(jù)統(tǒng)計與處理
awk 功能強大,一次讀取一行文本,按分隔符切片后處理
語法: awk [options] 'cmd' file
- 切片保存在內建變量中:
$1, $2, …($0表示整行) - 默認分隔符為空格,
-F選項可指定分隔符
# 打印第1列和第3列
awk '{print $1,$3}' email.out
# 當?shù)?列為tcp且第2列為1時,打印整行
awk '$1=="tcp" && $2==1 {print $0}' email.out
# 打印表頭(NR==1表示第一行)
awk '($1=="tcp" && $2==1) || NR==1 {print $0}' email.out
# 以逗號為分隔符,打印第2列
awk -F "," '{print $2}' test.txt
# 統(tǒng)計各IP出現(xiàn)次數(shù)
awk '{count[$1]++} END {for(i in count) print i "\t" count[i]}' access.log
# 按逗號切分,將第一列追加到文件
awk -F "," '{print $1 >> "test01.txt"}' data.txt
6.2 sed —— 流編輯器(替換文件內容)
sed 全名 Stream Editor,適合對文本行內容進行批量處理,支持正則表達式
語法: sed [option] 'sed command' filename
sed 常用操作標記:
| 標記 | 說明 |
|---|---|
g | 行內全部替換(不加則只替換首個) |
p | 打印匹配行 |
d | 刪除匹配行 |
w | 將匹配行寫入文件 |
s | 替換操作 |
# 將以 Str 開頭的替換為 String(^ 表示行首) sed -i 's/^Str/String/' replace.java # 將行末的 . 替換為 ;(需轉義 .) sed -i 's/\.$/\;/' replace.java # 全文將 Jack 替換為 me(g 表示全部替換) sed -i 's/Jack/me/g' replace.java # 刪除空行(^ *$ 匹配只有空格的行) sed -i '/^ *$/d' replace.java # 刪除包含 Integer 的行 sed -i '/Integer/d' replace.java # 多命令同時執(zhí)行(用 ; 分隔) grep 'input' 123.txt | sed 's/\"http://g; s/,/\n/g' # 替換后保存到新文件 sed -n 's/\"http://gw test01.txt' 123.txt
6.3 cut —— 數(shù)據(jù)裁剪
從文件每一行中剪切字段并輸出
語法: cut [選項] 文件名
| 選項 | 功能 |
|---|---|
-f | 列號,提取第幾列 |
-d | 分隔符(默認是制表符 \t) |
# 以中文冒號分隔,提取第1列 cut -d ":" -f 1 cut.txt # 以 : 分隔,提取 $PATH 的第3列 echo $PATH | cut -d ":" -f 3 # 以 : 分隔,提取第3列及之后所有列 echo $PATH | cut -d ":" -f 3-
七、管道與重定向
7.1 管道操作符|
將前一個命令的標準輸出作為后一個命令的輸入
注意事項:
- 只處理前一個命令的正確輸出,不處理錯誤輸出
- 右邊命令必須能夠接收標準輸入流
ls -l | more # 分屏顯示 ls 結果
ls -l | grep ".py" # 在 ls 結果中查找 .py 文件
# 從日志中查詢包含 error 的行
grep 'error' email.log
# 過濾 error 行中包含數(shù)字的部分
grep 'error' email.log | grep -o '\[0-9\]'
# 過濾包含 tomcat 的進程,排除當前 grep 進程
ps -ef | grep tomcat | grep -v grep
# 綜合管道:提取、切分、替換、保存
grep 'input' 123.txt | awk -F ',' '{print $2}' | sed 's/\"http://g' | awk -F ":" '{print $1 >> "test01.txt"}'
7.2 xargs —— 參數(shù)傳遞過濾器
將標準輸入數(shù)據(jù)轉換成命令行參數(shù)
# -n:每行輸出指定數(shù)量
cat test.txt | xargs -n3
# -d:按指定字符分隔文本
echo "nameXnameXnameXname" | xargs -dX
# -I:命令替換(每個參數(shù)執(zhí)行一次命令)
ls *.jpg | xargs -n1 -I {} cp {} /data/images/
# -t:將執(zhí)行的命令也打印出來
ls * | xargs -t -n1 -I {} cp -r {} /root/backup/
# 組合使用:X分隔,每行2個
echo "nameXnameXnameXname" | xargs -dX -n2
八、壓縮與解壓縮
8.1 tar 打包命令
壓縮打包(-c):
tar -cvf start.tar a.java b.java # 將 a.java、b.java 打包 tar -cvf start.tar ./* # 將當前目錄下所有文件打包 tar -zcvf start.tar.gz a.java b.java # 打包并使用 gzip 壓縮 tar -zcvf start.tar.gz ./* # 將當前目錄打包壓縮為 .tar.gz tar -jcvf start.tar.bz2 ./* # 打包并使用 bzip2 壓縮(.tar.bz2)
解壓縮(-x):
tar -xvf start.tar # 解包到當前目錄 tar -xvf start.tar -C /usr/local # 解包到 /usr/local 目錄 tar -zxvf start.tar.gz # 解壓 .tar.gz 到當前目錄 tar -zxvf start.tar.gz -C /usr/local # 解壓 .tar.gz 到指定目錄 tar -jxvf start.tar.bz2 # 解壓 .tar.bz2 到當前目錄 tar xf node-v12.18.1-linux-x64.tar.xz # 解壓 .tar.xz 文件
tar 選項說明:
| 選項 | 含義 |
|---|---|
c | 創(chuàng)建打包文件 |
x | 解開打包文件 |
v | 顯示詳細進度 |
f | 指定檔案文件名(必須放在選項最后) |
-z | 調用 gzip 進行壓縮/解壓縮 |
-j | 調用 bzip2 進行壓縮/解壓縮 |
-C | 解壓到指定目錄(目錄必須事先存在) |
f 選項必須放在選項列表的最后!
8.2 zip/unzip 命令
壓縮(zip):
zip lib.zip tomcat.jar # 壓縮單個文件 zip -r lib.zip lib/ # 壓縮整個目錄 zip -r lib.zip file1.jar file2.jar # 壓縮多個文件
解壓縮(unzip):
unzip file1.zip # 解壓到當前目錄 unzip -d /usr/app/ com.example.zip # 解壓到指定目錄
九、系統(tǒng)信息與進程管理
9.1 時間與日期
date # 查看系統(tǒng)當前時間 cal # 查看本月日歷 cal -y # 查看本年日歷
9.2 磁盤信息
df -h # 查看系統(tǒng)各分區(qū)磁盤使用情況(human-readable) du -lh # 查看當前目錄下各文件夾占用空間 du -sh # 查看當前文件夾總占用空間 du -h /usr/local # 查看指定目錄大小 du --max-depth=1 # 只查看當前目錄下一級的占用情況
9.3 進程管理
ps aux # 查看所有進程詳細狀態(tài) ps -ef | grep java # 查看名稱含 java 的進程 ps -ef | grep mysql # 查看 MySQL 相關進程 ps -aux | grep 28990 # 根據(jù) PID 查看進程信息 top # 動態(tài)實時查看進程資源占用(q 退出) kill -9 2630 # 強制終止 PID 為 2630 的進程
ps 選項說明:
| 選項 | 含義 |
|---|---|
a | 顯示終端上的所有進程(包含其他用戶) |
u | 顯示進程的詳細狀態(tài) |
x | 顯示沒有控制終端的進程 |
9.4 top 命令詳解
top # 實時查看系統(tǒng)資源占用(按 q 退出)
統(tǒng)計信息區(qū)說明:
top - 15:33:39 up 5:40, 2 users, load average: 1.09, 1.04, 0.98 Tasks: 123 total, 3 running, 120 sleeping, 0 stopped, 0 zombie %Cpu(s): 42.1 us, 2.0 sy, 0.0 ni, 49.2 id, 0.0 wa, 6.0 hi, 0.7 si KiB Mem: 3780.9 total, 727.4 free, 668.8 used, 2384.7 buff/cache KiB Swap: 2048.0 total, 2046.0 free, 2.0 used, 859.6 avail
| 字段 | 說明 |
|---|---|
us | 用戶空間占用 CPU 百分比 |
sy | 內核空間占用 CPU 百分比 |
id | 空閑 CPU 百分比 |
wa | 等待 I/O 的 CPU 時間百分比 |
進程信息區(qū)字段說明:
| 字段 | 說明 |
|---|---|
| PID | 進程 ID |
| USER | 進程所有者 |
| PR | 優(yōu)先級 |
| NI | nice 值(負值=高優(yōu)先級) |
| %CPU | CPU 占用百分比 |
| %MEM | 內存占用百分比 |
| S | 進程狀態(tài)(R=運行,S=睡眠,Z=僵尸) |
| COMMAND | 命令名 |
9.5 后臺運行程序
nohup sh test.sh & # 后臺運行,日志輸出到 nohup.out nohup sh test.sh >> test.out & # 后臺運行,日志輸出到 test.out
9.6 關機與重啟
shutdown -h now # 立即關機 shutdown -h 10:53 # 在 10:53 關機 shutdown -h +10 # 10分鐘后自動關機 shutdown -r now # 立即重啟 shutdown -r +30 '30 minutes to reboot' # 30分鐘后重啟并通知用戶 shutdown -c # 取消之前的關機/重啟計劃 reboot # 強制重啟
十、用戶與權限管理
10.1 文件權限說明
-rw-r--r-- 1 root root 34942 Jan 19 2018 bootstrap.jar
權限位說明:
- r: read(讀?。? w: write(寫入) x: execute(執(zhí)行)
- : 文件類型(-=普通文件,d=目錄,l=軟鏈接)
- 前3位:文件所有者的權限(user)
- 中3位:所屬組其他用戶的權限(group)
- 后3位:其他用戶的權限(others)
示例:rw-r--r-- 表示
- 所有者:可讀、可寫、不可執(zhí)行
- 同組用戶:可讀、不可寫、不可執(zhí)行
- 其他用戶:可讀、不可寫、不可執(zhí)行
10.2 修改文件權限 ——chmod
# 符號方式 chmod u+x web.xml # 給所有者(user)添加執(zhí)行權限 chmod g+x web.xml # 給所屬組(group)添加執(zhí)行權限 chmod o+x web.xml # 給其他用戶(others)添加執(zhí)行權限 chmod a+x web.xml # 給所有人添加執(zhí)行權限 # 數(shù)字方式(r=4, w=2, x=1) chmod 755 web.xml # rwxr-xr-x(所有者全權限,其他只讀執(zhí)行) chmod 644 web.xml # rw-r--r--(所有者讀寫,其他只讀) chmod 777 web.xml # rwxrwxrwx(所有人全權限,生產中慎用) chmod 111 web.xml # --x--x--x(所有人只有執(zhí)行權限) chmod -R 755 dir/ # 遞歸修改目錄下所有文件權限
10.3 修改文件所有者 ——chown
chown sum file.txt # 將文件所有者改為 sum chown sum:sum file.txt # 同時改所有者和所屬組為 sum chown -R sum /usr/sum/ # 遞歸修改目錄下所有文件的所有者 chown -R sum:sum /usr/sum/ # 遞歸修改所有者和所屬組
10.4 用戶管理
# 添加用戶 useradd -d /usr/sum -m sum # 創(chuàng)建用戶 sum,家目錄為 /usr/sum # 設置用戶密碼 passwd sum # 切換用戶 su - sum # 切換到 sum 用戶(并切換到其家目錄) su sum # 切換到 sum 用戶(保持當前目錄) exit # 退出當前登錄,回到上一個用戶 # 查看用戶信息 id sum # 查看用戶 UID 和 GID who # 查看當前所有登錄用戶 whoami # 查看當前登錄用戶賬戶名 cat /etc/passwd # 查看所有用戶列表 # 修改用戶信息 usermod 選項 用戶名 # 刪除用戶 userdel sum # 刪除用戶 rm -rf /usr/sum # 刪除用戶家目錄(需分開執(zhí)行) # 賦予 root 權限(sudo 權限) visudo # 編輯 sudoers 文件 # 在文件中添加:sum ALL=(ALL) ALL sudo -s # 使用 root 權限執(zhí)行命令
10.5 組管理
groupadd groupname # 創(chuàng)建用戶組 groupdel groupname # 刪除用戶組 groupmod -n newname oldname # 將用戶組改名 chgrp -R groupname dir/ # 遞歸修改目錄所屬組 cat /etc/group # 查看所有組的信息
十一、網(wǎng)絡與遠程管理
11.1 查看/配置網(wǎng)卡 ——ifconfig
ifconfig # 查看所有網(wǎng)卡配置信息 ifconfig | grep inet # 只顯示 IP 地址
- Linux 物理網(wǎng)卡名通常以
ensXX表示 127.0.0.1是本地回環(huán)地址,用于測試本機網(wǎng)卡
11.2 網(wǎng)絡連通性檢測 ——ping
ping 192.168.1.100 # 持續(xù) ping 目標 IP ping -c 4 www.example.com # 發(fā)送4個 ping 包后停止 ping 127.0.0.1 # 檢測本機網(wǎng)卡是否正常
11.3 端口與連接檢測
telnet 49.32.587.164 8093 # 檢查目標服務器指定端口是否可用 lsof -i:8080 # 查看占用 8080 端口的進程 netstat -tunlp | grep 8080 # 查看指定端口的進程信息 netstat -tunlp # 顯示所有 tcp/udp 端口和進程情況 netstat -lt # 列出所有處于監(jiān)聽狀態(tài)的 tcp 端口 netstat -an # 查看當前系統(tǒng)的 IP 連接(全平臺通用)
查看連接狀態(tài)數(shù)量:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
11.4 遠程登錄 ——ssh
ssh user@192.168.1.100 # 使用默認 22 端口登錄 ssh -p 2222 user@192.168.1.100 # 指定端口號登錄 exit # 退出 SSH 會話
| 參數(shù) | 說明 |
|---|---|
user | 遠程機器上的用戶名 |
remote | 遠程機器的 IP 或域名 |
-p port | 指定端口號(默認22) |
11.5 curl 命令
# GET 請求
curl "http://www.example.com"
# POST 請求(表單格式)
curl -d 'login=admin&password=123' -X POST https://example.com/login
# POST 請求(JSON 格式)
curl -l -H "Content-type: application/json" \
-X POST \
-d '{"phone":"13800138000","password":"test"}' \
http://example.com/api/users
11.6 添加 Hosts
vim /etc/hosts # 編輯 hosts 文件 # 添加一行:49.235.32.164 www.example.com /etc/init.d/network restart # 保存后重啟網(wǎng)絡生效
11.7 防火墻管理
service iptables status # 查看防火墻狀態(tài) service iptables stop # 臨時關閉防火墻 chkconfig iptables off # 設置防火墻開機不啟動
十二、軟件包管理
12.1 yum(CentOS/RedHat)
yum install iptables-services # 安裝軟件包 yum list # 列出當前已安裝的所有包 yum search package_name # 在倉庫中搜索軟件包 yum update package_name # 更新指定軟件包 yum remove package_name # 刪除軟件包 yum clean all # 清除所有緩存 # 安裝文件傳輸工具(上傳下載) yum install -y lrzsz rz # 上傳文件到服務器 sz filename # 從服務器下載文件
12.2 apt(Ubuntu/Debian)
sudo apt install 軟件包名 # 安裝軟件 sudo apt remove 軟件名 # 卸載軟件 sudo apt upgrade # 更新所有已安裝的包 sudo apt update # 更新軟件包列表
十三、其他實用命令
13.1 歷史命令
history # 查看歷史使用過的命令 history | grep es # 過濾與 es 相關的歷史命令
13.2 查看系統(tǒng)信息
cat /etc/redhat-release # 查看操作系統(tǒng)版本(RedHat/CentOS) cat /etc/shells # 查看系統(tǒng)支持的 shell 列表 echo $USER # 輸出當前用戶名 echo $PATH # 輸出系統(tǒng)路徑變量 set # 輸出所有環(huán)境變量 which ls # 查看命令所在的位置(如 /bin/ls) which useradd # 查看命令路徑(如 /usr/sbin/useradd)
13.3 定時任務
crontab -e # 打開/編輯定時任務文件 # 示例:每天 0 點執(zhí)行腳本 0 0 * * * /data/shell/bin/del-30-days-ago-log.sh
crontab 時間格式:
分 時 日 月 周 命令 * * * * * /path/to/script.sh
13.4 Linux 內核參數(shù)優(yōu)化
vim /etc/sysctl.conf # 編輯內核參數(shù)配置文件 sysctl -p # 重新加載配置(不重啟生效)
十四、系統(tǒng)日志
常用系統(tǒng)日志文件位置(以 RedHat/CentOS 為例):
/var/log/messages # 系統(tǒng)啟動后的信息和錯誤日志(最常用) /var/log/secure # 安全相關的日志信息 /var/log/maillog # 郵件相關的日志信息 /var/log/cron # 定時任務相關的日志 /var/log/spooler # UUCP 和 news 設備相關的日志 /var/log/boot.log # 守護進程啟動和停止的日志 # 查看操作歷史 cat .bash_history # 查看當前用戶的命令歷史記錄
十五、Docker 容器常用命令
# 搜索鏡像
docker search mysql
# 查看已下載的鏡像
docker images
# 下載并運行容器
docker run -di --name=mycontainer -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root <鏡像ID>
# 查看運行中的容器
docker ps
# 查看所有容器(包括未運行的)
docker ps -a
# 停止/啟動/重啟容器
docker stop mycontainer
docker start mycontainer
docker restart mycontainer
# 刪除容器
docker rm mycontainer
十六、Vim 編輯器詳細使用指南
16.1 Vim 簡介
vim 是 Linux 系統(tǒng)上最常用的文本編輯器,功能強大。它有三種主要工作模式:
┌─────────────────────────────────────────────────┐
│ Vim 三種模式 │
│ │
│ 普通模式 ──i/a/o──→ 插入模式 │
│ ↑ │ │
│ └─────── ESC ────────┘ │
│ │ │
│ └──── : ────→ 命令行模式 ──→ 執(zhí)行后回普通 │
└─────────────────────────────────────────────────┘
16.2 打開文件
vim filename.txt # 打開文件(不存在則創(chuàng)建新文件) vim +3 filename.txt # 打開文件并跳轉到第3行 vim +/keyword file.txt # 打開文件并定位到第一個關鍵詞處 vi filename.txt # vi 是 vim 的精簡版
16.3 三種模式詳解
模式一:普通模式(Normal Mode)
打開文件后默認進入普通模式,不能直接輸入文字,主要用于移動光標、復制、刪除、搜索等操作。
光標移動:
| 按鍵 | 功能 |
|---|---|
h | 向左移動一個字符 |
l | 向右移動一個字符 |
j | 向下移動一行 |
k | 向上移動一行 |
w | 跳到下一個單詞開頭 |
b | 跳到上一個單詞開頭 |
0 | 跳到行首 |
$ | 跳到行尾 |
gg | 跳到文件開頭(第一行) |
G | 跳到文件末尾(最后一行) |
nG 或 :n | 跳到第 n 行 |
Ctrl+f | 向下翻頁 |
Ctrl+b | 向上翻頁 |
復制、粘貼、刪除:
| 按鍵 | 功能 |
|---|---|
yy | 復制當前行 |
nyy | 復制當前行起的 n 行(如 3yy) |
p | 在當前行下方粘貼 |
P | 在當前行上方粘貼 |
dd | 刪除(剪切)當前行 |
ndd | 刪除(剪切)當前行起的 n 行 |
x | 刪除光標所在字符 |
dw | 刪除一個單詞 |
D | 刪除從光標到行尾 |
u | 撤銷上一步操作(undo) |
Ctrl+r | 重做(redo) |
搜索:
| 按鍵 | 功能 |
|---|---|
/keyword | 向下搜索 keyword |
?keyword | 向上搜索 keyword |
n | 跳到下一個匹配項 |
N | 跳到上一個匹配項 |
模式二:插入模式(Insert Mode)
在普通模式下按以下鍵進入插入模式(開始輸入文字):
| 按鍵 | 進入位置 |
|---|---|
i | 在光標前插入 |
a | 在光標后插入 |
I | 在行首插入 |
A | 在行尾插入 |
o | 在當前行下方新建一行并插入 |
O | 在當前行上方新建一行并插入 |
按 ESC 鍵退出插入模式,返回普通模式
模式三:命令行模式(Command-Line Mode)
在普通模式下按 : 進入命令行模式(屏幕底部出現(xiàn) : 提示符):
文件保存與退出:
| 命令 | 功能 |
|---|---|
:w | 保存文件(不退出) |
:q | 退出(文件無修改時有效) |
:wq | 保存并退出 |
:wq! | 強制保存并退出 |
:q! | 強制退出(放棄所有修改) |
:x | 保存并退出(等同于 :wq) |
:w filename | 另存為指定文件名 |
文本替換:
| 命令 | 功能 |
|---|---|
:s/old/new | 替換當前行第一個匹配 |
:s/old/new/g | 替換當前行所有匹配 |
:%s/old/new/g | 替換整個文件所有匹配 |
:1,5s/old/new/g | 替換第1到第5行所有匹配 |
行號與跳轉:
| 命令 | 功能 |
|---|---|
:set nu | 顯示行號 |
:set nonu | 隱藏行號 |
:n | 跳轉到第 n 行(如 :10 跳到第10行) |
其他命令:
| 命令 | 功能 |
|---|---|
:!command | 在不退出 vim 的情況下執(zhí)行 shell 命令 |
:r filename | 將指定文件內容插入當前光標位置 |
:e filename | 在 vim 中打開另一個文件 |
16.4 Vim 快速參考總結
打開文件:vim file.txt
↓
普通模式(默認)
↓ i / a / o
插入模式(輸入文字)
↓ ESC
返回普通模式
↓ :
命令行模式(保存/退出)
:wq 保存退出 | :q! 不保存退出
16.5 Vim 常用操作速記
# 快速編輯文件并保存退出 vim file.txt # 打開 i # 進入插入模式 # ... 輸入內容 ... ESC # 退出插入模式 :wq # 保存退出 # 只讀查看文件 vim -R file.txt # 只讀模式打開 :q # 查看后退出 # 快速替換文本 vim file.txt :%s/Jack/Tom/g # 全文替換 Jack 為 Tom :wq # 保存退出
十七、C 語言代碼編譯
17.1 GCC 編譯器基礎
GCC(GNU Compiler Collection)是 Linux 下最常用的 C/C++ 編譯器。
# 安裝 GCC(CentOS/RedHat) yum install -y gcc # 安裝 GCC(Ubuntu/Debian) sudo apt install gcc # 查看 GCC 版本 gcc --version
17.2 C 語言編譯基本流程
源代碼(.c)→ 預處理(.i)→ 編譯(.s)→ 匯編(.o)→ 鏈接 → 可執(zhí)行文件
17.3 GCC 常用編譯命令
最簡單的編譯(一步到位)
gcc hello.c -o hello # 編譯 hello.c,生成可執(zhí)行文件 hello ./hello # 運行程序
分步編譯(了解各階段)
# 第一步:預處理(展開宏定義和頭文件,生成 .i 文件) gcc -E hello.c -o hello.i # 第二步:編譯(生成匯編代碼 .s 文件) gcc -S hello.i -o hello.s # 第三步:匯編(生成目標文件 .o 文件) gcc -c hello.s -o hello.o # 第四步:鏈接(生成最終可執(zhí)行文件) gcc hello.o -o hello
常用編譯選項
# 開啟所有警告(推薦初學者使用,幫助發(fā)現(xiàn)潛在問題) gcc -Wall hello.c -o hello # 開啟調試信息(用于 GDB 調試) gcc -g hello.c -o hello # 指定 C 語言標準 gcc -std=c99 hello.c -o hello # 使用 C99 標準 gcc -std=c11 hello.c -o hello # 使用 C11 標準 # 開啟優(yōu)化 gcc -O1 hello.c -o hello # 1級優(yōu)化 gcc -O2 hello.c -o hello # 2級優(yōu)化(常用) gcc -O3 hello.c -o hello # 3級優(yōu)化 # 鏈接數(shù)學庫(使用 math.h 時需要) gcc hello.c -o hello -lm # 同時指定多個源文件 gcc main.c utils.c -o program # 指定頭文件搜索路徑 gcc -I /usr/local/include hello.c -o hello # 指定庫文件搜索路徑 gcc hello.c -L /usr/local/lib -lmylib -o hello
17.4 完整示例
1. 編寫第一個 C 程序:
vim hello.c # 創(chuàng)建并編輯源文件
在 vim 中輸入以下內容:
#include <stdio.h>
int main() {
printf("Hello, Linux!\n");
return 0;
}2. 編譯并運行:
gcc hello.c -o hello # 編譯 ./hello # 運行 # 輸出:Hello, Linux!
17.5 多文件項目編譯
目錄結構示例:
project/
├── main.c
├── add.c
├── add.h
└── Makefile
手動編譯多文件:
# 分別編譯各源文件為目標文件 gcc -c main.c -o main.o gcc -c add.c -o add.o # 鏈接所有目標文件 gcc main.o add.o -o project # 運行 ./project
一步編譯多文件:
gcc main.c add.c -o project
17.6 使用 Makefile 管理編譯
Makefile 可以自動化編譯過程,避免每次手動輸入編譯命令
基本 Makefile 示例(Makefile 文件):
# 目標文件名 TARGET = project # C 編譯器 CC = gcc # 編譯選項 CFLAGS = -Wall -g # 源文件列表 SRCS = main.c add.c # 目標文件列表(.c 替換為 .o) OBJS = $(SRCS:.c=.o) # 默認目標:生成可執(zhí)行文件 $(TARGET): $(OBJS) $(CC) $(OBJS) -o $(TARGET) # 編譯每個 .c 文件為 .o 文件 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ # 清理編譯產生的文件 clean: rm -f $(OBJS) $(TARGET)
Makefile 使用命令:
make # 編譯項目 make clean # 清理編譯產生的中間文件和可執(zhí)行文件 make -j4 # 使用4個并行任務加速編譯
17.7 GDB 調試基礎
GDB(GNU Debugger)是 Linux 下的 C/C++ 調試工具
# 編譯時必須加 -g 選項才能調試 gcc -g hello.c -o hello # 啟動 GDB 調試 gdb ./hello
GDB 常用命令:
| 命令 | 簡寫 | 說明 |
|---|---|---|
run | r | 運行程序 |
break 行號 | b | 在指定行設置斷點 |
break 函數(shù)名 | b | 在函數(shù)入口設置斷點 |
next | n | 執(zhí)行下一行(不進入函數(shù)) |
step | s | 執(zhí)行下一行(進入函數(shù)內部) |
print 變量名 | p | 打印變量的值 |
continue | c | 繼續(xù)運行到下一個斷點 |
list | l | 顯示源代碼 |
quit | q | 退出 GDB |
backtrace | bt | 顯示調用棧 |
info locals | — | 顯示局部變量 |
GDB 調試示例:
gdb ./hello (gdb) break main # 在 main 函數(shù)設置斷點 (gdb) run # 開始運行 (gdb) next # 執(zhí)行下一行 (gdb) print i # 打印變量 i 的值 (gdb) continue # 繼續(xù)運行 (gdb) quit # 退出
17.8 常見編譯錯誤解決
| 錯誤信息 | 可能原因 | 解決方法 |
|---|---|---|
No such file or directory | 頭文件路徑不對 | 檢查 #include 路徑或加 -I 參數(shù) |
undefined reference to 'xxx' | 鏈接時找不到函數(shù) | 檢查是否缺少庫,加 -l 參數(shù) |
implicit declaration of function | 未聲明函數(shù)就使用 | 添加對應頭文件或前向聲明 |
expected ';' before '}' | 語法錯誤(缺分號) | 檢查報錯行及其上一行 |
segmentation fault | 訪問非法內存(段錯誤) | 使用 GDB 調試,檢查指針 |
warning: unused variable | 聲明了變量但未使用 | 刪除未使用的變量 |
十八、快速參考速查表
目錄與文件操作
| 分類 | 命令 | 說明 |
|---|---|---|
| 目錄導航 | pwd | 查看當前目錄 |
cd ~ / cd .. / cd - | 切換到家目錄/上級/上次目錄 | |
ll / ls -alh | 查看目錄內容(含隱藏文件/詳細信息) | |
tree | 以樹狀圖顯示目錄結構 | |
| 目錄操作 | mkdir -p dir/sub | 遞歸創(chuàng)建目錄 |
rmdir dir | 刪除空目錄 | |
rm -rf dir | 強制刪除目錄(含所有內容) | |
| 文件操作 | touch file | 創(chuàng)建文件 |
cp -r src dst | 遞歸復制 | |
mv src dst | 移動或重命名 | |
find -name "*.c" | 按名稱查找文件 | |
ln -s src link | 創(chuàng)建軟鏈接 |
文件內容處理
| 分類 | 命令 | 說明 |
|---|---|---|
| 查看內容 | cat -n file | 帶行號查看 |
more / less | 分屏查看 | |
head -n 10 / tail -n 10 | 查看前/后N行 | |
tail -f logfile | 實時查看日志 | |
| 文本搜索 | grep -n pattern file | 顯示匹配行及行號 |
grep -v pattern file | 顯示不匹配的行 | |
grep -i pattern file | 忽略大小寫搜索 | |
| 文本處理 | awk '{print $1}' file | 打印第1列 |
sed 's/old/new/g' file | 全文替換 | |
cut -d "," -f 1 file | 按分隔符提取列 | |
| 重定向 | cmd > file | 覆蓋輸出到文件 |
cmd >> file | 追加輸出到文件 | |
| 管道 | cmd1 | cmd2 | 將cmd1輸出作為cmd2輸入 |
壓縮解壓
| 命令 | 說明 |
|---|---|
tar -zcvf out.tar.gz dir/ | gzip 壓縮目錄 |
tar -zxvf file.tar.gz | 解壓 .tar.gz |
tar -zxvf file.tar.gz -C /dest | 解壓到指定目錄 |
zip -r out.zip dir/ | zip 壓縮目錄 |
unzip file.zip -d /dest | 解壓 zip 到指定目錄 |
系統(tǒng)與進程
| 命令 | 說明 |
|---|---|
ps aux | 查看所有進程 |
top | 動態(tài)查看進程(q退出) |
kill -9 PID | 強制終止進程 |
df -h | 查看磁盤空間 |
du -sh dir/ | 查看目錄大小 |
shutdown -r now | 立即重啟 |
shutdown now | 立即關機 |
date | 查看系統(tǒng)時間 |
用戶與權限
| 命令 | 說明 |
|---|---|
chmod 755 file | 修改文件權限 |
chown user:group file | 修改文件所有者和組 |
su - username | 切換用戶 |
sudo command | 以管理員權限執(zhí)行 |
useradd username | 創(chuàng)建用戶 |
passwd username | 設置密碼 |
groupadd groupname | 創(chuàng)建用戶組 |
網(wǎng)絡與遠程
| 命令 | 說明 |
|---|---|
ifconfig | 查看網(wǎng)卡信息 |
ping ip | 檢測網(wǎng)絡連通性 |
ssh user@host | 遠程登錄 |
scp file user@host:path | 遠程復制文件 |
netstat -tunlp | 查看端口占用 |
lsof -i:8080 | 查看指定端口 |
curl url | 發(fā)送 HTTP 請求 |
Vim 常用操作
| 操作 | 命令 |
|---|---|
| 打開文件 | vim file.txt |
| 進入插入模式 | i(光標前)/ a(光標后)/ o(下行新增) |
| 退出插入模式 | ESC |
| 保存退出 | :wq |
| 不保存退出 | :q! |
| 全文替換 | :%s/old/new/g |
| 搜索 | /keyword(向下)/ ?keyword(向上) |
| 復制行 | yy / nyy(復制n行) |
| 刪除行 | dd / ndd(刪除n行) |
| 撤銷 | u |
C 語言編譯常用命令
| 命令 | 說明 |
|---|---|
gcc hello.c -o hello | 編譯C程序 |
gcc -Wall hello.c -o hello | 編譯并顯示所有警告 |
gcc -g hello.c -o hello | 編譯并加入調試信息 |
gcc -std=c99 hello.c -o hello | 使用C99標準編譯 |
./hello | 運行可執(zhí)行文件 |
make | 使用Makefile編譯項目 |
make clean | 清理編譯產物 |
gdb ./hello | 啟動GDB調試 |
學習建議:
- 多練習常用命令,熟能生巧
- 遇到不熟悉的命令,先用
man 命令名或命令 --help查閱文檔 - Vim 的使用需要刻意練習,建議每天使用 vim 編輯文件
- C 語言編譯建議從單文件開始,逐步過渡到 Makefile 管理多文件項目
- 在實驗環(huán)境中大膽嘗試各種命令,積累經(jīng)驗
# 將命令輸出插入當前文件
附錄:常用快捷鍵總結
| 快捷鍵 | 說明 |
|---|---|
| Tab | 命令/路徑自動補全 |
| Ctrl+C | 終止當前運行的程序 |
| Ctrl+Z | 掛起當前程序 |
| Ctrl+D | 退出當前終端 / EOF |
| Ctrl+L | 清屏(相當于 clear) |
| Ctrl+A | 光標移到行首 |
| Ctrl+E | 光標移到行尾 |
| Ctrl+U | 刪除光標前所有內容 |
| Ctrl+K | 刪除光標后所有內容 |
| Ctrl+R | 搜索歷史命令 |
| 上/下方向鍵 | 瀏覽歷史命令 |
以上就是Linux中最全常用命令速查表(建議收藏備用)的詳細內容,更多關于Linux常用命令的資料請關注腳本之家其它相關文章!
相關文章
linux服務器之LVS、Nginx和HAProxy負載均衡器對比總結
這篇文章主要介紹了linux服務器之LVS、Nginx和HAProxy負載均衡器對比,需要的朋友可以參考下2014-03-03
CentOS7服務器環(huán)境下vsftpd安裝及配置方法
這篇文章主要介紹了CentOS7服務器環(huán)境下vsftpd安裝及配置方法,結合實例形式分析了CentOS7服務器環(huán)境下進行vsftpd安裝及配置的步驟與相關問題解決方法,需要的朋友可以參考下2018-03-03

