對于開發(fā)人員來說,終端是最重要的工具之一刹衫。掌握終端醋寝,能夠有效的提升開發(fā)人員的工作流程。使用終端带迟,許多日常任務(wù)都被簡化為了編寫簡單的命令并按下 Enter 按鈕音羞。
本文列舉了一系列 Linux 命令,旨在幫助大家充分利用終端這個工具仓犬。其中一些終端命令是內(nèi)置的嗅绰,其它的則是免費(fèi)的工具,并且經(jīng)過測試這些工具可以在不到一分鐘內(nèi)進(jìn)行安裝。
Curl
Curl 是一個命令行工具窘面,用于通過 HTTP(s)翠语、FTP 和數(shù)十種其它協(xié)議進(jìn)行請求。使用Curl可以進(jìn)行文件下載财边、檢查響應(yīng)標(biāo)題和自由訪問遠(yuǎn)程數(shù)據(jù)肌括。
在 Web 開發(fā)中,Curl 經(jīng)常和 RESTful API 一起使用酣难,用于測試連接谍夭。
# Fetch the headers of a URL.
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
# Make a GET request to a remote API.
curl http://numbersapi.com/random/trivia
is the number of days it takes Saturn to orbit the Sun.
Curl 命令可能比上述代碼更復(fù)雜。有許多選項(xiàng)用于控制 headers鲸鹦、Cookie慧库、身份驗(yàn)證等跷跪。了解更多馋嗜,請閱讀Everything curl。
Tree
Tree 是一個小型的命令行實(shí)用程序吵瞻,它將目錄中的文件以可視化的方式進(jìn)行顯示葛菇。它采用遞歸運(yùn)行的方式,遍歷每個級別的嵌套并繪制所有內(nèi)容的格式樹橡羞。這樣就能快速的瀏覽并查找需要的文件眯停。
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
還可以使用簡單的 regEx 模式來過濾結(jié)果:
tree -P '*.min.*'
.
├── css
│ ├── bootstrap.min.css
├── fonts
└── js
└── bootstrap.min.js
Tmux
根據(jù)維基的解釋,Tmux 是一個終端復(fù)用器卿泽。通俗的說莺债,它是一個能將多個終端連接到單個終端會話的工具。
Tmux 允許用戶在終端中的程序之間切換签夭,添加屏幕窗格齐邦,并將多個終端連接到同一個會話,使其保持同步第租。在遠(yuǎn)程服務(wù)器上工作時措拇,Tmux 特別有用,因?yàn)樗试S用戶創(chuàng)建新的選項(xiàng)卡慎宾,而無需再次登錄丐吓。
(web前端學(xué)習(xí)交流群:328058344 禁止閑聊,非喜勿進(jìn)L司荨)
du
du 命令用于生成關(guān)于文件和目錄的空間使用情況的報告券犁。du很容易使用,可以遞歸地運(yùn)行汹碱,遍歷每個子目錄并返回每個文件的大小族操。
du 的常見用例是:當(dāng)某個驅(qū)動器的空間不足,用戶不清楚每個存儲器的大小。使用此命令可以快速查看每個文件夾所占用的存儲空間色难,從而找到占用最大空間的存儲器泼舱。
# Running this will show the space usage of each folder in the current directory.
# The -h option makes the report easier to read.
# -s prevents recursiveness and shows the total size of a folder.
# The star wildcard (*) will run du on each file/folder in current directory.
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),使用df會返回有關(guān)可用磁盤空間的各種信息枷莉。
Git
Git 是迄今為止最流行的版本控制系統(tǒng)娇昙,也是現(xiàn)代 web 開發(fā)的定義工具之一。
Git 有很多第三方應(yīng)用和工具可以使用笤妙,但是大多數(shù)人都喜歡通過本地終端訪問 git冒掌。git CLI 非常強(qiáng)大,可以處理最混亂的項(xiàng)目版本問題蹲盘。
想了解更多關(guān)于 git 的信息股毫,推薦學(xué)習(xí)“ Learn Git in 30 Minutes”。
Tar
Tar 是用于文件存檔的默認(rèn) Unix 工具召衔。Tar 允許用戶將多個文件快速綁定到一個包中铃诬,從而使之更容易存儲和移動。
tar -cf archive.tar file1 file2 file3
使用-x選項(xiàng)也可以提取現(xiàn)有的 .tar 檔案苍凛。
tar -xf archive.tar
請注意趣席,其它大多數(shù)格式如 .zip 和 .rar 無法使用 tar 命令打開,要打開 .zip 和 .rar 這樣的文件還需要 unzip 這樣的命令醇蝴。
許多現(xiàn)代 Unix 系統(tǒng)都在運(yùn)行擴(kuò)展版本的 tar(GNU tar)宣肚,可以幫助壓縮執(zhí)行文件的大小:
# Create compressed gzip archive.
tar -czf file.tar.gz inputfile1 inputfile2
# Extract .gz archive.
tar -xzf file.tar.gz
md5sum
Unix 有幾個內(nèi)置的哈希命令悠栓,包括 md5sum霉涨,sha1sum 等。這些命令行工具在編程中有很多種應(yīng)用惭适,但是最重要的功能是它們可以用于檢查文件的完整性笙瑟。
例如,如果從不受信任的源下載了 .iso 文件腥沽,那么該文件就有可能包含有害的腳本逮走。為了確保 .iso 是安全的,用戶可以從中生成 md5 或其它哈希今阳。
md5sum ubuntu-16.04.3-desktop-amd64.iso
0d9fe8e1ea408a5895cbbe3431989295 ubuntu-16.04.3-desktop-amd64.iso
Htop
Htop 是創(chuàng)建任務(wù)管理器中 top 任務(wù)的一個很強(qiáng)大的可選方案师溅。它提供了一個高級界面,具有用于監(jiān)視和控制系統(tǒng)進(jìn)程的許多選項(xiàng)盾舌。
[圖片上傳中墓臭。。妖谴。(1)]
雖然 Htop 在終端中運(yùn)行窿锉,但是 Htop 對鼠標(biāo)控件有非常好的支持酌摇。這也使得能夠更容易地完成導(dǎo)航菜單,選擇進(jìn)程嗡载,并組織排序和過濾的任務(wù)窑多。
Ln
Unix 中的 Links 類似于 Windows 中的快捷方式,允許用戶快速訪問某些文件洼滚。Links是通過ln命令創(chuàng)建的埂息,有兩種類型:hard 或 symbolic。每種都有不同的屬性遥巴,分別用于不同的對象千康。
以下是使用鏈接的示例。假設(shè)桌面上有一個名為 Scripts 的目錄铲掐。它包含了我們通常使用的 bash 腳本拾弃。每當(dāng)我們想要調(diào)用腳本之一時,都必須這樣做:
~/Desktop/Scripts/git-scripts/git-cleanup
這樣顯然很不方便摆霉,因?yàn)槊看味家獙懡^對路徑豪椿。相反,我們可以創(chuàng)建一個從腳本文件夾到 /usr/local/bin 的符號鏈接斯入,這樣會使腳本更容易執(zhí)行砂碉。
sudo ln -s ~/Desktop/Scripts/git-scripts/git-cleanup /usr/local/bin/
通過創(chuàng)建符號鏈接蛀蜜,就可以在任何打開的終端中刻两,通過簡單地寫入名稱來調(diào)用腳本煎楣。
git-cleanup
SSH
使用 ssh 命令闹究,用戶可以快速連接到遠(yuǎn)程主機(jī)并登錄到其 Unix shell。這也讓用戶可以直接從本地機(jī)器的終端操作遠(yuǎn)程的服務(wù)器闸准,更方便地發(fā)出命令霎奢。
要建立連接户誓,只需要指定正確的 IP 地址或 URL。第一次連接到新服務(wù)器時幕侠,會有一些形式的身份驗(yàn)證帝美。
ssh username@remote_host
如果要在服務(wù)器上快速執(zhí)行命令而不進(jìn)行登錄,可以在URL之后添加一個命令晤硕。該命令將在服務(wù)器上運(yùn)行悼潭,并返回該結(jié)果。
ssh username@remote_host ls /var/www some-website.comsome-other-website.com
可以使用 SSH 做很多事情舞箍,例如創(chuàng)建代理和隧道舰褪、使用私鑰保護(hù)連接、傳輸文件等等疏橄。
Grep
Grep 是一個用于在文本中查找字符串的標(biāo)準(zhǔn) Unix 實(shí)用程序占拍。Grep 以文件或直接流的形式進(jìn)行輸入,通過正則表達(dá)式運(yùn)行其內(nèi)容,并返回所有匹配的行晃酒。
在對大文件進(jìn)行過濾時表牢,使用 Grep 會非常方便。下面我們使用 Grep 和 data 命令搜索來對一個大型日志文件進(jìn)行搜索贝次,并生成一個僅包含當(dāng)天錯誤信息的新文件初茶。
// Search for today's date (in format yyyy-mm-dd) and write the results to a new file.
grep "$(date +"%Y-%m-%d")" all-errors-ever.log > today-errors.log
處理字符串的另一個很強(qiáng)大的命令是 sed,它比 grep 更強(qiáng)大也更復(fù)雜浊闪,它可以執(zhí)行幾乎任何與字符串相關(guān)的任務(wù)恼布,包括添加、刪除或替換字符串搁宾。
Alias
許多 Unix 命令折汞,包括本文中的一些功能,在添加所有的選項(xiàng)后盖腿,會是一個很長串的命令爽待。為了使這些很長串的命令更容易記憶,用戶可以使用alias 命令來創(chuàng)建簡短的別名:
# Create an alias for starting a local web server.
alias server="python -m SimpleHTTPServer 9000"
# Instead of typing the whole command simply use the alias.
server
Serving HTTP on 0.0.0.0 port 9000 ...
只要保持終端處于開啟狀態(tài)翩腐,該別名將一直可用鸟款。為了使別名永久可用,也可以將 alias 命令添加到 .bashrc 文件中茂卦。
總結(jié)
對于 Web 開發(fā)人員來說何什,如果上述的12個終端命令中,還有你不熟悉的命令等龙,那么就應(yīng)該通過本文快速的熟悉起來处渣,并逐漸的運(yùn)用到自己的開發(fā)工作中。