command-line
基本款
- 切換檔案位子,查看清單
$ ls # 列出目前所在的清單
$ pwd # 確認目前所在路徑
$ cd [path | ..] # 切換到所在的檔案位子
- 另一個比較特別的是看說你的檔案權限
$ ll
-rw-r--r--@ 1 zhuzhengyang staff 20K 7 16 16:44 2021 Trend of MLCC under 5G Era.jpg
- 建立 folder 和刪除 folder
$ mkdir # 建立
$ rm -rf [FOLDER_NAME] # 刪除
- 建立一個檔案 => 這樣子會開啟一 vim 的模式,編寫完成後存擋就會有新的檔案出來了
vi [FILE_NAME]
- 在背景執行一個 shell
./shell &
# check list
jobs
# kill app
kill all [PID | ./shell]
cp
CP 是 Linux(Unix Like)常用使用命令之一,用來複製檔案與目錄。
指令:cp -參數 來源檔案 目標檔案
常用參數: -a:除了具有-p 參數功能外,還能加入 SElinux 屬性 -i:如果要複製過去的位置已經有相同檔案,會在覆蓋前詢問是否持續進行 -p:將檔案本身屬性(權限、所有者、時間)同時複製過去(一般用於備份居多) -r:針對目錄下檔案做遞歸複製(白話:整個目錄下每一個檔案複製到你想要的位置) -s:複製成符號連結檔(symbolic link)(白話:複製成捷徑檔)
範例 1:將 from.txt 檔案從 user 目錄,複製到 user2 目錄下,並改名為 to.txt
cp /user1/from.txt /user2/desktop/to.txt
範例 2:將 frome 目錄下,user 目錄夾連同檔案整個複製到 to 目錄
cp -r /from/user1 /to/
範例 3:將 source 目錄下,user 目錄夾連同檔案與屬性整個備份到 backup 目錄
cp -rp /source/user /backup/
範例 4:複製多個檔案到 to 目錄夾
cp user1.txt user2.txt /to/
範例 5:利用萬用符號*複製多個符合.mp3 檔案到 to 目錄夾
cp /from/*.mp3 /to/
補充說明:像是特殊權限檔案(/etc/shadow),密碼檔、設定檔、…等,需要加上-a 或-p 參數,才能完整複製檔案。如果複製過程希望有進度條功能,建議改用 scp 或 rsync 指令
tail
查看 log 時候用的
$ tail [-F | -f | -r] [-b number | -c number | -n number] [file ...]
多加一個 [-q] 為了在檢查多個文件時禁止打印標題。
$ tail [-F | -f | -r] [-q] [-b number | -c number | -n number] [file ...]
網路連線檢測:ping / telnet / curl
ping、telnet、curl 是工程師檢測與除錯網路的必備工具:
- ping:測試主機是否活著、網路是否通暢
- telnet:測試特定 Port(連接埠)是否開啟
- curl:獲取網頁內容或發送 API 請求
ping(主機連線測試)
- 主要用途:檢查目標主機是否在線、網路是否通暢,並評估延遲(Latency)與封包丟失率
- 協定層級:ICMP(網路層)
- 運作方式:送出封包給目標主機,要求對方回應
- 特色:只能測「整台機器」連線狀態,無法指定 Port
- 使用時機:網站連不上時,第一步確認遠端伺服器是否開機且網路有通
ping google.com
telnet(TCP 埠號測試)
- 主要用途:測試特定 TCP Port 是否有開放與監聽
- 協定層級:TCP(傳輸層)
- 特色:不只遠端登入;因能建立 TCP 連線,常用來檢查 Web(80/443)、資料庫或快取服務的 Port 是否被防火牆擋住
- 使用時機:確認防火牆是否放行,或後端服務(如 MySQL、Redis)是否正常啟動
# 若畫面全黑或出現連線成功訊息,代表該 Port 有通
telnet example.com 443
補充:較新的系統常已不預裝 telnet,可改用下方的
nc(netcat)。
curl(網頁與 API 測試)
透過 terminal 模擬 client 發送 HTTP/HTTPS 請求,取得網頁內容或 API 回應。
- 主要用途:模擬瀏覽器行為,發送請求並獲取回傳內容
- 協定層級:應用層(HTTP/HTTPS)
- 特色:
- 可直接抓取並顯示網頁原始碼
- 可發送 GET、POST 等不同請求,測試 API
- 可自訂 Headers(如 Cookie、Token)並追蹤轉址
- 使用時機:測試 Web 伺服器、API 介面開發、下載檔案
curl [option] [url]
# 查看網站回傳的 Header / 狀態碼
curl -I https://google.com
# 加上自定義 header
curl -H "User-Agent: yes-please/2000" https://example.com
curl -H "name: value" https://example.com
快速比較
| 功能 | ping | telnet | curl |
|---|---|---|---|
| 主要目的 | 測試網路通不通 | 測試 Port 通不通 | 測試網頁 / API 回應 |
| 運作層級 | 網路層(ICMP) | 傳輸層(TCP) | 應用層(HTTP/HTTPS) |
| 能否測 Port? | 否 | 是 | 是(透過 URL 指定) |
| 回傳內容 | 延遲(ms)、封包遺失率 | 連線狀態(成功或拒絕) | 網頁原始碼、HTTP 狀態碼 |
延伸與替代工具
類似 ping:測試網路與路徑
- traceroute / tracert:追蹤封包到目的地沿途的路由器節點;
ping不通時可找出在哪一跳斷掉 - mtr(My Traceroute):結合 ping + traceroute;持續監控每一 hop 的丟包率與延遲,適合排網路抖動
- fping:可同時 ping 多個 IP 或整個網段,速度比傳統 ping 快
traceroute example.com
mtr example.com
fping 192.168.1.1 192.168.1.2
類似 telnet:測試 Port 連線
- nc(Netcat):網路瑞士刀,telnet 的實用替代
- nmap:可掃描目標主機多個 Port,並偵測 OS / 服務版本
# 測試 TCP Port 是否開啟(-z:只掃不傳送資料,-v:顯示結果)
nc -zv example.com 443
nmap example.com
類似 curl:網頁與 API 測試
- wget:偏下載檔案;預設存成檔案,支援背景下載、遞迴抓整站(curl 習慣把內容印在畫面上)
- httpie:現代 CLI HTTP client;語法較直覺,輸出有語法高亮
- Postman / Insomnia:圖形化 API 測試工具,適合複雜 Headers / 腳本管理
wget https://example.com/file.zip
http GET https://example.com
DNS 排查
- nslookup / dig:查詢 DNS 解析紀錄。若 ping 網址不通但 ping IP 通,可用 dig 確認是否 DNS 異常或尚未生效
dig example.com
nslookup example.com
xargs
xargs可以讀入stdin的資料,並且以空白字元或斷行字元作為分辨,將 stdin 的資料分隔成為 arguments 。 因為是以空白字元作為分隔,所以,如果有一些檔名或者是其他意義的名詞內含有空白字元的時候, xargs 可能就會誤判了~他的用法其實也還滿簡單的!就來看一看先!
$ xargs -[ 0 | e | p | n ] command
選項與參數:
-0 :如果輸入的 stdin 含有特殊字元,例如 `, \, 空白鍵等等字元時,這個 -0 參數
可以將他還原成一般字元。這個參數可以用於特殊狀態喔!
-e :這個是 EOF (end of file) 的意思。後面可以接一個字串,當 xargs 分析到這個字串時,
就會停止繼續工作!
-p :在執行每個指令的 argument 時,都會詢問使用者的意思;
-n :後面接次數,每次 command 指令執行時,要使用幾個參數的意思。
當 xargs 後面沒有接任何的指令時,預設是以 echo 來進行輸出喔!
exclude
https://blog.csdn.net/leshami/article/details/18225683
https://cloud.tencent.com/developer/article/1360591
下列為查尋 command line 網站
lsof
列出所有行程所開啟的檔案
# 列出所有行程所開啟的檔案
lsof .my_file.txt.swp
# lsof .my_file.txt.swp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gvim 7167 gtwang 14u REG 8,6 12288 786944 .my_file.txt.swp
lsof -i :80
什麼是 Linux lsof ? 5 分鐘學會管理行程和檔案的用法教學與範例 – Li-Edward
kill
kill -9 [PID]
最常用的訊號是:
- SIGKILL(訊號 9):立即結束進程,不能 被捕獲或忽略。
- SIGTERM(訊號 15):正常結束進程,可以被捕獲或忽略。
- SIGSTOP(訊號 19):暫停進程,不能被捕獲、忽略或結束。
- SIGCONT(訊號 18):繼續執行被暫停的進程。
- SIGINT(訊號 2):通常是 Ctrl+C 產生的訊號,可以被進程捕獲或忽略。
pbcopy & pbpaste
macOS 中用來與剪貼簿 (clipboard) 互動的指令:
pbcopy:接收標準輸入 (stdin) 的內容並複製到系統剪貼簿。pbpaste:將系統剪貼簿的內容輸出到標準輸出 (stdout)。
# 將檔案內容複製到剪貼簿
$ cat file.txt | pbcopy
# 將指令的輸出結果複製到剪貼簿
$ ls -al | pbcopy
# 將剪貼簿的內容輸出並存成新檔案
$ pbpaste > new_file.txt
參考文章
https://linux.vbird.org/linux_basic/centos7/0320bash.php#bash
https://blog.gtwang.org/linux/linux-grep-command-tutorial-examples/
https://codingnote.cc/zh-tw/p/337545
https://ithelp.ithome.com.tw/articles/10236105