那些沒人教你又超實用的 Linux 指令
這篇文章寫於 2022 年,文中的工具與版本可能已經更新,實作時請以官方文件為準。
本文目錄
儘管在 Linux 用 cd、vi、mv、cp、rm、ls 這些基礎指令就能滿足大部分的需求,但遇到一些特殊狀況時,這些指令就不夠用了。
這篇文章彙整了筆者常用的 Linux 指令,以「vim 編輯器、查詢 Server 各項資源、檢查網路環境」為主。

大綱
▋ vim 編輯器常用指令
➤ 顯示行數(:set number)
➤ 前往指定行數(:行數)
➤ 刪除多行
➤ 大量註解/反註解
➤ 搜尋文字並取代
▋ 查詢 Server 各項資源
➤ Server 啟動多久了(uptime)
➤ 找出最耗費資源的程式(top)
➤ 以目錄形式呈現目前磁碟使用狀況(ncdu)
➤ 搜尋檔案(find)
➤ 搜尋歷史指令(Control+R)
▋ 檢查網路環境
➤ 網路診斷瑞士刀(nc)
➤ 設定好 DNS 後,確認回應是否正常(nslookup)
➤ 查詢佔用的 port(lsof)
vim 編輯器常用指令
有時我們會需要進入 Server 做一些緊急調整(ex:Debug 時),搭配下面的操作可以增進你的效率。
顯示行數(:set number)
方便與 Local 端程式做比對。

前往指定行數(:行數)
直接跳轉到你要修改的位置。
刪除多行
刪除一行的指令是「dd」,但如果有幾十行甚至上百行需要刪除,那會 dd 到崩潰,而且很容易有誤刪的情形。
- 刪除從游標開始的 N 行(ex:刪除 5 行就是
5dd)
- 刪除指定開始、結束的行
:[start],[end]d(ex:刪除第 3~17 行3,17d)
大量註解/反註解
有時我們不是要刪除程式,只是想要把一定範圍內的程式註解起來做一些測試或是 Debug,如果你依靠「i」來慢慢編輯,真的會心死。
- 大量註解:先將游標移至想開始註解的行,按「Control+v」進入 VISUAL BLOCK 模式,接著選擇想要註解的區塊;按下「Shift+i」進入編輯模式填寫註解符號(ex:
//),按「Esc」離開。
- 反註解:先將游標移至想開始註解的行,按「Control+v」進入 VISUAL BLOCK 模式,接著選擇想要反註解的區塊(因為我的註解用
//所以要按右鍵刪除兩列);按下「d」刪除註解。
搜尋文字並取代
:[範圍]s/[比對字串]/[取代字串]/g
- 將全部的「test」取代為「try」:
:%s/test/try/g
- 將 1~10 行的「test」取代為「try」:
:1,10s/test/try/g
查詢 Server 各項資源
了解資源的使用狀況,可以幫你更快地找出問題點,與優化方向。
Server 啟動多久了(uptime)

- 21:21:33:系統時間
- up 6 days, 7:40:Server 已執行時間,時間越大代表越穩定。
- 1 user:使用者總連線數(注意不是使用者數!)。
- load average:系統平均負載狀況,顯示1 / 5 / 15 分鐘的系統平均負載(以單核 CPU 來說,建議數值不大於 3,超過 5 就需要注意了)。
找出最耗費資源的程式(top)
top 這個指令會顯示 Server 即時的資源使用狀況。

top 也可以指定欄位做排序,以下面的指令( top -b -o +%MEM | head -n 17)為例,他是指:
- -b:以 batch 模式輸出報表。
- -o:我們使用「%MEM」這個欄位,以「正序」來排序。
- head -n 17:因為上面的資訊就佔了 7 行,所以你想要顯示前 10 名就要用 10+7=17。

在找出最耗費資源的程式後,有時會搭配
kill [PID]的方式來終止程式;如果無法順利終止,可使用kill -9 [PID]來強行終止。
以目錄形式呈現目前磁碟使用狀況(ncdu)
如果發現磁碟空間快滿了,又不確定哪個資料夾佔用了大量空間,ncdu 可以幫你高效率的檢查(指令會以你當前的目錄來做顯示,)。

如果你想要掃描根目錄硬碟使用狀況,請使用 ncdu -x /,若要退出請按 q 。

此指令並非預設安裝,Ubuntu 環境下的安裝指令為:
apt-get -y install ncdu
搜尋檔案(find)
假使我們想從根目錄開始搜尋「php.ini」在哪裡:
sudo find / -name php.ini

如果我們不確定檔名,也可以透過「?」來進行模糊搜尋:
sudo find / -name ph?.ini

搜尋歷史指令(Control+R)
有時我們會用到帶有一長串噁心的參數的指令,這些指令只要下過一次後 history 就會記住。
因此我們下次想要再使用它時,只要按下「Control+R」輸入要搜尋的字串,bash 就會顯示最近一項匹配的指令;連續按「Control+R」則繼續搜尋更早的歷史指令,按「Enter」則會執行顯示的指令。
檢查網路環境
想要知道網路彼此環境的狀況,除了用最基礎的 ping 以外,下面這些指令可以幫你獲得更詳盡的資訊。
網路診斷瑞士刀(nc)
Netcat (nc)能夠做到的事情很多,這邊跟大家分享常用的功能。
- 測試目標 Server 特定的 port 是否開啟:
nc -v [host] [port]

- 在兩台 Server 間複製檔案
在接收檔案的 Server 上執行 nc -l 5000 > demo.js ,在傳送檔案的 Server 上執行 nc [host] 5000 < demo.js

這個操作跟 scp 很類似,但特別的地方在於不需要登入的動作(不需要帳號密碼),假使遇到兩台 Server 無法互相登入時, 他就是一個解決方案。
Netcat 還有非常多的功能,有興趣的可以再自行鑽研。
設定好 DNS 後,確認回應是否正常(nslookup)
下面以查詢 google.com 的 ip 為例: nslookup google.com

在執行結果中「192.168.220.186」是查詢的 DNS Server,而「172.217.160.110」則是返回的 ip。
在內網/外網執行時會有不同回應,可用來確認設定是否符合預期。
查詢佔用的 port(lsof)
lsof (List Open Files)可以列出所有被行程打開的檔案,筆者會透過這個指令來看 port 被哪個行程佔用了。
lsof -i -P | grep :443
-i 是查找網路連線, -P 是列出實際的 port,最後透過 grep 將 port 為 443 的顯示出來。

以上是筆者常用的 Linux 指令,如果你平常有用到其他實用的指令,也歡迎留言分享喔!
留言載入中…