1. 程式人生 > >每個Web開發者都該瞭解的12條命令列

每個Web開發者都該瞭解的12條命令列

轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。
原文出處:https://tutorialzine.com/2017/08/12-terminal-commands-every-web-developer-should-know

 

在開發者的彈藥箱裡,命令列是最具生產力的工具之一。掌握它們可以給你的工作流程帶來非常積極的影響。因為,許多日常任務都可以用一條命令然後按回車來解決。

在本文中,我們為你準備了一系列常用命令,幫你充分利用你的終端。這其中有些命令是系統內建的,另外的一些則是需要另外安裝的免費工具,不過這些免費工具是經歷了時間的考驗,所以你可以分分鐘將他們安裝完成。

curl

curl是一個傳送請求的命令列工具。可使用HTTP(s)、FTP,以及一些你可能從未聽過的協議傳送請求。它可以下載檔案,檢查響應頭,自由地訪問遠端資料。

在web開發中,curl常用於測試連線和RESTful APIs。

# 獲取一個URL的HTTP HEADER
curl -I http://google.com
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: http://www.google.com/?gfe_rd=cr&ei=0fCKWe6HCZTd8AfCoIWYBQ
Content-Length: 258
Date: Wed, 09 Aug 2017 11:24:01 GMT

# 向遠端API發出GET請求
curl http://numbersapi.com/random/trivia
29 is the number of days it takes Saturn to orbit the Sun.

curl命令可以遠比上面的情況複雜。它有一大堆的選項來控制請求頭、cookies、許可權驗證等等。你可以在這本相當棒的免費書Everything curl中讀到更多。  

tree

tree是一個小巧的命令列,用於視覺化地展示目錄裡的檔案結構。它遞迴地執行,檢查巢狀的每一個層級,為所有內容繪製出格式化的樹形結構。你可以用它快速瀏覽檔案結構,定位到所需的檔案。 

tree
.
├── css
│   ├── bootstrap.css
│   ├── bootstrap.min.css
├── fonts
│   ├── glyphicons-halflings-regular.eot
│   ├── glyphicons-halflings-regular.svg
│   ├── glyphicons-halflings-regular.ttf
│   ├── glyphicons-halflings-regular.woff
│   └── glyphicons-halflings-regular.woff2
└── js
    ├── bootstrap.js
    └── bootstrap.min.js

也有類似正則匹配的選項,用於過濾結果。

tree -P '*.min.*'
.
├── css
│   ├── bootstrap.min.css
├── fonts
└── js
    └── bootstrap.min.js

tmux

根據維基百科所說,tmux是一個終端複用器,翻譯為人話就是說,它是一個把多給終端連線為一個終端會話的工具。

一個tmux分為3塊屏的終端如下:

它讓你在終端中的程式間切換,新增分屏,並講多個終端連線到同一個會話,並使之保持同步。尤其在遠端伺服器上工作時,tmux特別有用,因為它允許你無需再登入即可建立新的終端標籤頁。

disk usage - du

du命令能生成有關檔案和資料夾磁碟空間佔用情況的報告。它非常易於使用,能遞迴地遍歷每個子目錄,並返回單個檔案的大小。

一個du的常見用例是,你的磁碟空間不足了,而你不知道為啥。使用此命令,可快速看到每個資料夾佔用了多少儲存量,從而找到最佔空間的那個東西。

# 執行此命令將顯示當前目錄中每個資料夾的空間佔用情況。
# 使用 -h 命令選項將使報告更易讀。
# -s 可防止遞歸併顯示資料夾的總大小。
# 萬用字元(*),將在當前目錄中的所有檔案及資料夾上顯示所有資訊

du -sh *

1.2G    Desktop
4.0K    Documents
40G     Downloads
4.0K    Music
4.9M    Pictures
844K    Public
4.0K    Templates
6.9M    Videos

還有一個類似的命令列,叫做df(Disk Free)。與du相反的是,df返回的關於可用空間的許多資訊。

git

Git是目前最流行的版本控制系統。 它是現代web開發所使用的最典型的工具之一,我們絕不能將它排除在本文的列表之外。

有許多關於git的第三方應用和工具,但大部分人還是傾向於使用命令列原生的git。git的命令列介面真的很強大,甚至足以處理最雜亂的專案歷史。

如果你想學習關於git的更多知識,建議你檢視我們的30分鐘學會git的教程。

tar

tar是處理檔案打包的預設Unix工具。它讓你快速地把多個檔案打成一個包,這樣之後儲存和移動它們就會很方便。

tar -cf archive.tar file1 file2 file3

使用-x選項也可以解壓縮.tar格式的包檔案。

tar -xf archive.tar

請注意,大多數其他格式(如.zip和.rar)無法通過tar開啟。它們需要其他命令列工具才行,比如unzip。

許多現代Unix系統上有tar的擴充套件版本(比如GNU tar),它也能進行檔案壓縮:

# 建立 gzip 壓縮包.
tar -czf file.tar.gz inputfile1 inputfile2

# 解壓 .gz 壓縮包.
tar -xzf file.tar.gz

如果你的作業系統裡沒有那個版本的tar,你可以使用gzip,zcat或者compress來減少檔案存檔大小。  

md5sum

Unix裡有幾個內建的做hash運算的命令,包括md5sum,sha1sum以及其他。

這些命令列工具在程式設計中有各種應用,但最重要的是,它們可用於檢查檔案的完整性。

例如,如果您從不受信任的源下載了.iso檔案,可能裡面就包含有害指令碼。 你可以從中生成md5或其他雜湊,以此確保該.iso是安全的。

md5sum ubuntu-16.04.3-desktop-amd64.iso 

0d9fe8e1ea408a5895cbbe3431989295  ubuntu-16.04.3-desktop-amd64.iso

然後,你就可以將本地生成的md5和原始作者提供的字串相比較(比如UbuntuHashes)。

htop

htop是比內建的top任務管理更強大的命令。它提供了一個高階版的介面,具有豐富的選項,用於監視和控制系統程序。

儘管執行在命令列,htop仍支援很好的滑鼠控制。這讓它更加容易地在選單間導航、選擇程序,以及通過排序和過濾來組織任務。

ln

Unix中的Links就好比是Windnows裡的快捷方式,它讓你快速訪問到某些檔案。Links通過ln命令來建立。它可以有兩種型別:hard和symbolic。每種型別都有不同的屬性,用於不同的事務。(瞭解更多)

這裡有許多你可以使用Links的例子。比如,我們在桌面有一個資料夾叫做Scripts,乾淨地放著ix我們常用的bash指令碼。每當想呼叫這些指令碼時,我們需要這麼做:

~/Desktop/Scripts/git-scripts/git-cleanup

顯然,每次輸入此絕對路徑,並不是很方便。相反,我們可以為Script資料夾在/usr/local/bin下建立一個symlink,這就讓在所有目錄下都可以執行Scripts裡的指令碼了。

sudo ln -s ~/Desktop/Scripts/git-scripts/git-cleanup /usr/local/bin/

有了建立好的symlink,我們現在可以開啟任一個命令列視窗,然後直接通過指令碼檔名執行它:

git-cleanup

ssh

使用ssh命令,使用者可以快速連線到遠端主機,並登入其Unix shell。 這使得我們可以方便地直接從本地計算機,向終端在伺服器發出命令。

要建立連線,只需給出正確的ip地址或url。首次連線到新伺服器時,將會有某種形式的身份驗證。

ssh username@remote_host

如果要快速執行在伺服器上的一些不需要登入的命令,你只需在url後新增命令即可。該命令將在伺服器上執行,然後返回結果。

ssh username@remote_host ls /var/www

some-website.com
some-other-website.com

有很多ssh可做的事情,比如建立代理和隧道,使用私鑰加密你的連線,傳輸檔案等等。你可在這個指南里讀到更多。  

grep

grep是標準的Unix工具,用於在文字中查詢字串。它以檔案或流作為輸入,讓其內容跟正則表示式做運算,並返回所有匹配的行。

需要過濾大型檔案時,此命令很實用。具體來講就是,我們可以把grepdate命令一起使用,用來搜尋大的日誌檔案,並生成只包含今天錯誤資訊的新檔案。

// 搜尋今天的日期(格式為yyyy-mm-dd)並將結果寫入新檔案。 
grep "$(date +"%Y-%m-%d")" all-errors-ever.log > today-errors.log

另一個很棒的、處理字串的命令是sed。它比grep更強大(也更復雜),幾乎可執行任何與字串相關的任務,包括新增,刪除或替換字串。  

alias

許多Unix命令,包括本文提到的一些,在向它們新增所有選項後,往往變得很長。為讓它們更好記,你可以使用內建的alias命令建立簡短的別名:  

# 建立用於啟動本地Web伺服器的別名。
alias server="python -m SimpleHTTPServer 9000"

# 不是鍵入整個命令只需使用別名。
server 

Serving HTTP on 0.0.0.0 port 9000 ...

只要保持命令視窗開啟,別名就保持有效。要使其長久被記住,你可以將alias命令新增到.bashrc檔案中。   

總結

以上就是我這總結出的12個Web開發者應該瞭解的命令列,可能不是那麼完整和全面,那麼希望如果大家還了解什麼命令或沒有在文中提到的,也歡迎大家補充和討論。  

&n