Shells命令列學習筆記

蘇里發表於2019-05-04

檢索工具

每個命令都有很詳細甚至繁瑣的引數,此文只演示簡單的使用示例。具體引數以及使用方式可以參照以下四種方式檢索:

  • 這個網站可以查詢一部分命令: explainshell.com/
  • 輸入manual命令:man ${YOUR_COMMAND}
  • 關於vi的部分:vimgifs.com/
  • 當然,最後google一下(wink~)

命令

ping

ping是一種計算機網路工具,用來測試資料包能否透過IP協議到達特定主機。ping的運作原理是向目標主機傳出一個ICMP的請求回顯資料包,並等待接收回顯回應資料包。程式會按時間和成功響應的次數估算丟失資料包率(丟包率)和資料包往返時間(網路時延,Round-trip delay time)。

ping www.baidu.com
複製程式碼

備註:這個命令常用於檢測域名對應伺服器是否在啟動狀態中。(詳細使用引數man ping,適用於以下所有命令)。

traceroute

traceroute是一種計算機網路工具。它可顯示資料包在IP網路經過的路由器的IP地址。

traceroute www.baidu.com
複製程式碼

如果系統中不存在此命令,按以下方式安裝:

sudo apt install inetutils-traceroute
sudo apt install traceroute
複製程式碼

備註:如果某個網站掛了,可以用這個命令檢測是哪個環節出了問題。

nslookup

nslookup可以指定查詢的型別,可以查到DNS記錄的生存時間還可以指定使用哪個DNS伺服器進行解釋。 在已安裝TCP/IP協議的電腦上面均可以使用這個命令。 主要用來診斷域名系統 (DNS) 基礎結構的資訊。

nslookup www.baidu.com
複製程式碼

curl

cURL是一個利用URL語法在命令列下工作的檔案傳輸工具。

請求www.baidu.com的網頁內容

curl www.baidu.com
複製程式碼

在輸出裡帶上Http Header(-i --include)

curl -i www.baidu.com
複製程式碼

Shells命令列學習筆記

nmap

nmap(“Network Mapper(網路對映器)”) 是一個網路探測和安全掃描程式,系統管理者和個人可以使用這個軟體掃描大型的網路,獲取那臺主機正在執行以及提供什麼服務等資訊。nmap支援很多掃描技術,例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標誌、ICMP、FIN、ACK掃描、聖誕樹(Xmas Tree)、SYN掃描和null掃描。

nmap www.baidu.com
複製程式碼

備註:一般用來檢測該伺服器開放的埠。比如以上命令的輸出內容如下,可知開放了80、443埠。

Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-04 16:52 CST
Nmap scan report for www.baidu.com (14.215.177.38)
Host is up (0.0095s latency).
Other addresses for www.baidu.com (not scanned): 14.215.177.39
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 4.67 seconds
複製程式碼

ufw

UFW 全稱為Uncomplicated Firewall,是Ubuntu 系統上預設的防火牆元件, 為了輕量化配置iptables 而開發的一款工具。 UFW 提供一個非常友好的介面用於建立基於IPV4,IPV6的防火牆規則。

示例比如開啟伺服器的443(https)埠:

sudo ufw allow 443
sudo ufw enable
sudo ufw status
複製程式碼

ssh

Secure Shell(安全外殼協議,簡稱SSH)是一種加密的網路傳輸協議,可在不安全的網路中為網路服務提供安全的傳輸環境。 SSH通過在網路中建立安全隧道來實現SSH客戶端與伺服器之間的連線。

比如建立一個SSH key:

cd ~/.ssh/
ssh-keygen -t rsa
複製程式碼

將生成的公鑰放置遠端伺服器中,然後即可以使用私鑰登入遠端伺服器:

ssh -i ~/.ssh/my_key root@$YOU_SERVER_IP
複製程式碼

Shells命令列學習筆記

find

find是一個用於在檔案系統中尋找檔案的Unix命令列工具。它的用法包括檔名模式匹配,時間戳匹配。

常用的幾個選項為:

  • -name
  • -type
  • -empty
  • -executable
  • -writable

通用格式如下:

find $YOU_DIRECTORY/ -name $YOU_FILES
複製程式碼

示例。比如想在express資料夾中尋找名稱含有Guide的md檔案

find express/ -name *Guide*.md
複製程式碼

grep

grep是一個最初用於Unix作業系統的命令列工具。在給出檔案列表或標準輸入後,grep會對匹配一個或多個正規表示式的文字進行搜尋,並只輸出匹配(或者不匹配)的行或文字。

示例在package.json裡搜尋作者的名稱:

grep -w "author" express//package.json
複製程式碼

Shells命令列學習筆記
則會輸出匹配該author單詞的一整行

"author": "TJ Holowaychuk <tj@vision-media.ca>",
複製程式碼

備註:這個命令也相當實用~可以查閱文件多多練習!

ls

常用命令之一,顯示當前資料夾的內容

ls
複製程式碼

比較常用的是這個組合

ls -laG
複製程式碼

Shells命令列學習筆記

cd

cd命令用來切換工作目錄至dirname。 其中dirName表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的home directory。

cd $PATH
複製程式碼

pwd

在類Unix系統和其他一些作業系統中,pwd(英語:print working directory)用於輸出當前工作目錄的絕對路徑

pwd
複製程式碼

mkdir/rmdir/rm/touch

新建資料夾

mkdir $FOLDER
複製程式碼

刪除資料夾

rmdir $FOLDER
複製程式碼

當然刪除資料夾也可以使用以下命令遞迴刪除檔案(這個命令需要小心使用)

rm -rf $FOLDER
複製程式碼

touch命令有兩個功能:一是用於把已存在檔案的時間標籤更新為系統當前的時間(預設方式),它們的資料將原封不動地保留下來;二是用來建立新的空檔案。

所以一般可以用來新建檔案,顯得十分方便

touch $FILE
複製程式碼

刪除檔案

rm $FILE
複製程式碼

cat/head/tail/more/less

cat是unix系統下用來檢視檔案連續內容用的指令,字面上的含意是“concatenate”(連續)的縮寫。除了用來作為顯示檔案內容外,cat指令也可用於標準流上的處理,如將顯示的訊息轉入或附加另一檔案上。

cat $YOUR_FILE
複製程式碼

結合標準輸出流>可以有以下姿勢:

cat $FILE1 > $FILE2
複製程式碼

關於head/tail/more/less這些命令工作效果大致相似,但是具體不同之處可以使用以上提供的方式查閱

vi

vi是一種模式編輯器。不同的按鈕和鍵擊可以更改不同的“模式”;比如說:在“插入模式”下,輸入的文字會直接被插入到文件;當按下“退出鍵”,“插入模式”就會更改為“命令模式”,並且游標的移動和功能的編輯都由字母來響應,例如:“j”用來移動游標到下一行;“k”用來移動游標到上一行,“x”可以刪除當前游標處的字元,“i”可以返回到“插入模式”(也可以使用方向鍵)。

掌握簡單的vi命令使用十分必要。

使用vim編輯檔案

vi $FILE
複製程式碼

輸入i進入INSERT模式,編輯完成後,輸入esc退出輸入INSERT模式,進入命令模式,輸入:wq寫入修改內容並退出vi。

具體使用十分複雜,可以多做練習。簡單的使用以上大概可以滿足,因為在伺服器中沒有圖形化介面,所以熟悉一定的vi操作是必須的。

sudo

sudo是linux系統管理指令,是允許系統管理員讓普通使用者執行一些或者全部的root命令的一個工具。

備註:普通使用者在執行需要root許可權的命令時,需要使用此命令。

sudo $command
複製程式碼

chown

chown 命令將 File 或 Directory 引數指定的檔案或目錄的所有者更改為 Owner 引數指定的使用者。

常見於某個檔案或資料夾沒有相關的許可權時,可以用此命令修改許可權。示例如下:

sudo chown -R $USER:$USER /var/www/
複製程式碼

Shells命令列學習筆記

ps/top

在大多數類Unix作業系統中,ps程式(“process status”的簡稱)可以顯示當前執行的程式。一個相關的Unix工具top則可以檢視執行程式的實時資訊。

ps
複製程式碼
top
複製程式碼

ps + grep可以快速找到對應程式的程式資訊:

ps -A | grep "vscode"
複製程式碼

top + grep實時顯示系統中對應程式程式(比如微信)的資源佔用狀況。

top | grep -i -w "wechat"
複製程式碼

(這裡使用到的|是pipeline,可以粗略理解為資料流從左到右的流動)

pbcopy

將內容複製到貼上板,示例如下:

cat $FILE | pbcopy
複製程式碼

然後愉快的ctrl + v就可以了。

小結

以上都只是簡單示例,每個命令的深入使用需要在實際工作中查詢、實踐。(如果以上分享存在錯誤的地方,歡迎各位同學指正~)

最後,讓我們用命令列提高工作效率~衝鴨!(●´∀`●)ノ

相關文章