美文网首页get√开发工具IT
为什么每个程序员都应该学习使用命令行

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

作者: 技匠 | 来源:发表于2016-04-10 21:56 被阅读10764次

    大学毕业以后我就成了一名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常用基本命令),并尝试反复使用它,当你习惯并适应使用这些命令以后,便可以更进一步,尝试写一些自动化脚本来帮助你完成一些工作。相信我,到那个时候,你一定会喜欢上命令行,而且会并被大家认为是一个高手的。当然,如果你已经是一个命令行达人了,也不妨在评论中分享你的使用心得哦 _


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

    相关文章

      网友评论

      • FongG:mark
      • 阿龙欧巴:本来想着赶紧敲代码呢,但是看了你的文章,停不下的赶脚啊,再看一两遍得赶紧工作了(不过汲取到了思想上的食量) :+1:
      • Ken_mmm:最近在Mac上玩adb,vim,git命令
      • 3f98f64e96fc:Win10要出bash了,拥抱
      • 凛紫:同感,我也是越来越喜欢打开终端进行操作了。
        技匠:@凛紫 :smile:
      • FullStack:强烈建议切换到IDEA,尝试一下吧,效率有个飞跃
        FullStack:@末等公民 你不知道有破解版这个东西么~~~ 哈哈 JetBrains的系列产品都能破解
        末等公民:@vcs 赞赞赞,旗舰版太贵了怎么办
      • 雨天_7:有一些我认同,有一些则不了
        使用ide还说用command是个老话题了,command的逼格比较高,但是门槛也比较高
        ide的总体效率并不差,容错能力更好一些(所有习惯command的人都有打错命令造成不可逆灾难的情况吧),而且门槛很低。

        程序猿这个行业一直在致力于帮助其他行业提升工作效率的开发,但是自己为什么不先提升效率呢?

        ide也有ide的美,很多优秀的ide已经做的非常了不起了,不要抵制,学会接受,程序猿就要敢于尝试才行

        我工作写代码有十几年了,第一台电脑是初中时候买的486,第一个hello world是初中时候自学besic写的,那时候只有dos,windows时代之后,我就再也不想回到那个时代去了。
        雨天_7:另外,世界上的程序猿只有三类,vim程序员、emacs程序员和其他ide程序员,我vim,emacs都用过,但是更喜欢现在先进的ide,先进的ide,我说的是先进的ide,可以切实有效的解决效率问题
      • AngMoKio:就是瞎扯蛋。如果命令行效率能比图形界面高,还要什么图形界面?显然是99.99%的情况下图形界面效率高
        阿希Mario:@qinjun998 当然是命令行效率高,但是学习成本高。图形界面是为了给普通用户使用,提高用户体验和降低学习成本。
      • Komiles:刚毕业时用Win,现在用Linux
      • 酪柠布丁:一名在校大三linuxer......感谢作者分享经验
      • 最怕认真:题主是个后端程序~,或者xx的
      • 30e03f335b62:哪个效率高用哪个
      • lxyz22zp:还可以练练英语语感:innocent:
      • 272123a83d72: 零基础的路过,想知道windows什么软件用来输入命令行,然后命令行在哪里学,白痴问题,谢谢
        53324d792ce6:@冰川孤辰 win10 bash
        冰川孤辰js:@五点半江南 我是习惯用Git bash,你用系统自带的cmd也行啊,win下也有挺多替代品的:cmder,babun,consoleZ...你可以都去尝试一下,找个用着顺手的
      • 5e617a504f6d:写.net的 离不开vs
      • bc732ddc660a:因为用命令行明显逼格比较高,尤其是撩妹的时候,简直是个装逼神器 :joy: :joy:
        bc732ddc660a:@痕迹BLANK 我是给学弟学妹指条明路 :joy: 程序猿哪还知道妹纸是什么生物
        痕迹Dev:@460896339 用写代码去撩妹这成功率也太低了吧!用来提高效率就好了~
      • 风清雨扬:命令行确实很方便
      • 25371ad7c3cc:你需要试试Intellij Idea然后扔掉Eclipse
        ca44450e8946:@低下头是人间 为什么呢,你买过idea的版权吗,我觉得eclipse挺好用的,个人习惯,哪个用的顺手就行,并非非此即彼
      • 竹林晓圣:高中肄业,学校里学过一点编程,现在24想学Java,请问有什么途径?文凭对于企业来说意味着什么?
        钟声博客:@竹林晓圣 自学编程完全可以,不过英语要好,感兴趣的话你可以看看我的自学经历
        竹林晓圣:@技匠 我前几天认识了一个培训机构的人,但是花费太高了,而且只有四个月,网上的差评也无数。想问如果是一个人放下所有的工作,自学可以么?到时候找工作会不会尴尬
        技匠:@竹林晓圣 可以读读我写的 如何招到一个靠谱的程序员。关键还是自身技能,一开始要积累经验。
      • 小华大大_IT:我感觉挺有用的
      • 庞大不小:ssh提高的效率,不是一点点。
        win对我来说,除了支付网银,以及玩国服英雄联盟这个游戏,我已经脱离win了
        敲代码,使用macbook,Xcode解决工作需求。
        写写文章,处理文稿邮件,晚上在家看看优酷,使用chromebook.
      • Iam老J:观点正确
      • d2b0dcc3f985:如果经常要登服务器处理问题,命令行就不可缺少,而且自然而然了
      • 慢清尘:每天敲HHKB
        冰川孤辰js:@慢清尘 壕 :joy:
      • 41225f458913:很有同感

      本文标题:为什么每个程序员都应该学习使用命令行

      本文链接:https://www.haomeiwen.com/subject/ugyylttx.html