Skip to main content

command-line

基本款

  1. 切換檔案位子,查看清單
$ ls # 列出目前所在的清單
$ pwd # 確認目前所在路徑
$ cd [path | ..] # 切換到所在的檔案位子
  1. 另一個比較特別的是看說你的檔案權限
$ ll
-rw-r--r--@ 1 zhuzhengyang staff 20K 7 16 16:44 2021 Trend of MLCC under 5G Era.jpg
  1. 建立 folder 和刪除 folder
$ mkdir # 建立
$ rm -rf [FOLDER_NAME] # 刪除
  1. 建立一個檔案 => 這樣子會開啟一 vim 的模式,編寫完成後存擋就會有新的檔案出來了
vi [FILE_NAME]
  1. 在背景執行一個 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

pingtelnetcurl 是工程師檢測與除錯網路的必備工具:

  • 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

curl 參考 option

快速比較

功能pingtelnetcurl
主要目的測試網路通不通測試 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 網站

https://ss64.com/osx/

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

lsof 參考文章

什麼是 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

參考文章

cp

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

網路連線檢測