为什么说每个程序员都应该学习命令行

4,302

大学毕业以后我就成了一名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确实有些难于掌握,特别是它独特的分支操作。你可以通过一些在线教程来进行学习,关于命令行,你也可以参考我之前写的【简明教程】Git 来熟悉那些命令的用法。

另一个好的办法是通过实践掌握这些命令,这里我推荐Try Git这个网站,你能在这里根据它的教程练习Git命令,15分钟内,你就能够掌握那些最常用的基本命令了。


前端开发依赖于命令行工具

前端因为它最贴近用户,因此在这个比以往任何时候都更重视用户体验的时代,正变得越来越重要。而针对前端的优秀工具也如雨后春笋般层出不穷。以前我们做前端时,如果需要用到依赖的第三方库,总是需要到相应的网站上去下载,然后引入到自己的工程里。而现在这一切都有相应的工具或库帮你完成。

  • 你可以使用NPM (Node Package Manager) 来安装几乎所有的前端第三方工具或开源库
  • 你可以使用SASS,LESS这样的预处理工具,来大大减轻CSS编写的难度,并使代码更加易于维护
  • 你还可以使用GRUNT,GULP这样基于任务的处理工具,来进行从代码、测试到部署的整套自动化流程。
  • 还有其他很多优秀的工具或库如Jade,CoffeeScript,Express.js,它们都能在某个领域为你提供极大的帮助。

但以上这些工具,都需要通过命令行来进行安装,因此,如果你想成为一名前端工程师的话,你也必须学习命令行


既然学习命令行对于程序员来说那么重要,我们又应该如何学习呢?

其实,我们大多数人排斥使用命令行是因为我们对使用命令行没有信心,认为很难像电影里那些黑客那样非常熟练地使用命令行。而当我们尝试去学习时,也总是会看到包含大量命令说明的书籍或教程,一下子我们可能就畏惧了。其实,对于初学者来说,你根本不需要去看那些书,因为它们大部分是为系统管理员写的。而对于一个普通程序员,你只需要从熟悉那些最常用的基本命令开始,比如 ls,cd,pwd,cp等(我在网上找到一篇不错的博客:linux常用基本命令),并尝试反复使用它,当你习惯并适应使用这些命令以后,便可以更进一步,尝试写一些自动化脚本来帮助你完成一些工作。相信我,到那个时候,你一定会喜欢上命令行,而且会并被大家认为是一个高手的。当然,如果你已经是一个命令行达人了,也不妨在评论中分享你的使用心得哦 ^_^

技匠,以上内容欢迎大家分享到朋友圈/微博等。如需转载,请通过简信联系授权。谢谢大家!