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