為什么說每個程序員都應(yīng)該學(xué)習(xí)命令行
大學(xué)畢業(yè)以后我就成了一名JAVA程序員,在之后的很長一段時間里,我每天上班的流程基本都是一樣的:
早上來到公司 -> 打開電腦(啟動Windows) -> 打開Eclipse(我是一名JAVA程序員) -> 寫一天代碼(期間我通過IDE集成的Tomcat服務(wù)器來調(diào)試我的應(yīng)用)-> 下班前通過Eclispe的插件把修改過的代碼提交到SVN代碼倉庫中 ->下班回家.
在我的印象中,很少需要用命令行去完成什么工作的。這種情況一直持續(xù)了很久,以至于我下意識地認為任何軟件工具都是應(yīng)該有一個圖形界面的。但最近幾年這種情況發(fā)生了改變,幾乎所有的工具軟件都不約而同地變得更加簡單而純粹,它們精簡了那些不必要的功能,不再一味追求大而全,而是更加注重用戶的感受和使用效率。其中一些非常優(yōu)秀的軟件工具更是拋棄了圖形界面,要求用戶通過命令行直接進行操作。這一改變當(dāng)然也對我的工作流程產(chǎn)生了影響,它變成了現(xiàn)在這個樣子:
打開電腦,啟動Mac操作系統(tǒng) -> 打開Sublime和Eclipse -> 通過命令行輸入三條命令 mongod;redis-server;grunt serve啟動我的本地調(diào)試環(huán)境 ->開發(fā)->通過命令行g(shù)it commit ;git push提交我一天的工作代碼 -> 結(jié)束工作。
通過上面的對比,你應(yīng)該已經(jīng)能夠發(fā)現(xiàn)命令行已經(jīng)成為了現(xiàn)代程序員所必須具備的一項基礎(chǔ)技能,而其原因最明顯地體現(xiàn)在以下三個方面:
你可以更有效地控制你的操作系統(tǒng)
控制操作系統(tǒng),這可能是學(xué)習(xí)命令行最直接的一個原因了。即使你不是一個程序員,也可以通過學(xué)習(xí)命令行,使你的工作效率得到顯著的提升。比如:一些簡單的命令能夠幫助我們快速搜索或查看文件,而通過對那些簡單命令進行組合,就可以完成更加復(fù)雜的任務(wù)。
以前,我要啟動一套本地的開發(fā)環(huán)境,我總是需要手工地一個個去點擊那些服務(wù)逐一啟動Web服務(wù)器、數(shù)據(jù)庫服務(wù)器、并打開IDE等等。這看起來每次只需要花2、3分鐘時間,但這是每天都需要進行的操作,而且由于調(diào)試需要,一天里經(jīng)常需要重復(fù)啟動好幾次。一個月下來我光花在啟動環(huán)境上的時間就花去了2,3個小時。后來,我便學(xué)著寫了一個Shell腳本,其實非常簡單,就是按順序去一個個掉用那些啟動服務(wù)的命令,這樣我每次只要點一下執(zhí)行那個腳本,整個環(huán)境就自動啟動好了。之后,我又進行了一些改進,讓它能夠根據(jù)我輸入的參數(shù)執(zhí)行不同的任務(wù),這又進一步提升了我的工作效率,開發(fā)的心情也頓時好了許多。
有了這個小小的成功經(jīng)歷之后,我又寫了好幾個Shell腳本,將那些原來需要重復(fù)操作的工作都讓腳本去完成了。正因為得到了這些好處,我也經(jīng)常鼓勵身邊的程序員們?nèi)ゾ帉懽詣踊_本,讓他們從重復(fù)性的工作中解脫出來。
你需要用Git來做版本控制
Git已經(jīng)成為最被推薦的版本控制工具。幾乎所有的開源軟件都使用Git來做版本控制,即使是那些大型軟件企業(yè)也在越來越多地使用Git。因此,作為程序員,你必須掌握Git。
但Git最早是用來維護Linux內(nèi)核代碼的,它的所有操作也都是基于命令行的。雖然GitHub也提供了Mac和Windows上的客戶端,但它們的使用效率完全無法跟直接用命令行相比。而且,我想告訴你,如果你參與過開源項目的話,你會發(fā)現(xiàn)幾乎沒有程序員喜歡使用客戶端,他們都能夠非常熟練地使用命令行進行操作。
不過,Git確實有些難于掌握,特別是它獨特的分支操作。你可以通過一些在線教程來進行學(xué)習(xí)。
另一個好的辦法是通過實踐掌握這些命令,這里我推薦Try Git這個網(wǎng)站,你能在這里根據(jù)它的教程練習(xí)Git命令,15分鐘內(nèi),你就能夠掌握那些最常用的基本命令了。
前端開發(fā)依賴于命令行工具
前端因為它最貼近用戶,因此在這個比以往任何時候都更重視用戶體驗的時代,正變得越來越重要。而針對前端的優(yōu)秀工具也如雨后春筍般層出不窮。以前我們做前端時,如果需要用到依賴的第三方庫,總是需要到相應(yīng)的網(wǎng)站上去下載,然后引入到自己的工程里。而現(xiàn)在這一切都有相應(yīng)的工具或庫幫你完成。
- 你可以使用NPM (Node Package Manager) 來安裝幾乎所有的前端第三方工具或開源庫
- 你可以使用SASS,LESS這樣的預(yù)處理工具,來大大減輕CSS編寫的難度,并使代碼更加易于維護
- 你還可以使用GRUNT,GULP這樣基于任務(wù)的處理工具,來進行從代碼、測試到部署的整套自動化流程。
- 還有其他很多優(yōu)秀的工具或庫如Jade,CoffeeScript,Express.js,它們都能在某個領(lǐng)域為你提供極大的幫助。
但以上這些工具,都需要通過命令行來進行安裝,因此,如果你想成為一名前端工程師的話,你也必須學(xué)習(xí)命令行。
既然學(xué)習(xí)命令行對于程序員來說那么重要,我們又應(yīng)該如何學(xué)習(xí)呢?
其實,我們大多數(shù)人排斥使用命令行是因為我們對使用命令行沒有信心,認為很難像電影里那些黑客那樣非常熟練地使用命令行。而當(dāng)我們嘗試去學(xué)習(xí)時,也總是會看到包含大量命令說明的書籍或教程,一下子我們可能就畏懼了。其實,對于初學(xué)者來說,你根本不需要去看那些書,因為它們大部分是為系統(tǒng)管理員寫的。而對于一個普通程序員,你只需要從熟悉那些最常用的基本命令開始,比如 ls,cd,pwd,cp等(我在網(wǎng)上找到一篇不錯的博客:linux常用基本命令),并嘗試反復(fù)使用它,當(dāng)你習(xí)慣并適應(yīng)使用這些命令以后,便可以更進一步,嘗試寫一些自動化腳本來幫助你完成一些工作。相信我,到那個時候,你一定會喜歡上命令行,而且會并被大家認為是一個高手的。
【本文是51CTO專欄作者“陳逸鶴”的原創(chuàng)文章,如需轉(zhuǎn)載請聯(lián)系作者本人(微信公眾號:techmask)】