我迫切需要一些建议.
作为CS专业,我差不多完成了大三.我有点觉得自己是一个后来者,因为直到二年级才开始进入计算机科学......通过努力工作,一年中有很多学分和暑期学校,我几乎赶上了同龄人,但是这里来了忧虑:
我的所有学校工作都教会了我很多关于计算机科学的知识,但很少关于实际编程.虽然我有很多动力,但我几乎没有空闲时间让我接受侧面项目.这让我感到不安,原因有两个,1)我真的对这个领域充满热情; 2)我知道很多雇主都喜欢看到在校外有经验的学生.
所以我最近有一个想法:如果我将Linux作为我的主要操作系统,但尽可能地限制自己到终端,试图自然地(在谷歌的帮助下)熟悉命令行,并希望逐渐恢复shell脚本使用在线教程.
你认为这对有抱负的程序员有多大帮助?它有多现实?对于小型项目,您还有其他建议吗?几乎没有空闲时间的学生可以在校外接听吗?
非常感谢,我喜欢这个网站(和播客),并将感谢任何反馈.
听起来像一个很好的计划.一些建议:
学会自动化一切.养成习惯.如果你做了几次以上的事情,把它放在一个脚本中.这不仅仅是为了避免打字而是为了记录这个过程.在发现问题时改进脚本.适当时共享脚本.
了解流水线的力量.发现xargs
命令的目的.重新写一个标准的命令行实用程序像grep
或sort
您所选择的语言.(我偏爱Perl,但这几乎是作弊.;-)
自定义您的.bashrc
文件.了解您喜欢哪些设置以及哪些设置不适合您.
使用ksh
而不是bash
脚本.没有太多差异,但ksh
有一些非常好的额外功能.不过,我更喜欢bash
交互式外壳.
似乎其他答案建议专注于"真正的编程语言".我不会说这是一个糟糕的建议,但根据我的经验,很少有程序员能够充分利用命令行.在职业生涯中,良好地使用shell脚本可以节省无数小时和大量乏味.
让我给你举个例子.本周末,我开始在我们的生产系统中添加新代码.我们上周一直在测试它,一切看起来都不错.理想情况下,您希望拥有一个完美的操作系统克隆,以便您可以测试苹果.但是我们买不起两个硬件副本,因此我们借用生产机器来运行测试并在我们执行升级时将它们交换到生产中.
现在要区分我们的操作和测试,我们使用两个不同的帐户.因此,在将系统投入运营之前,我们会清除测试帐户生成的某些文件.基本上这是一个两步过程:
查找测试用户创建的所有文件.
把它们吹走.
我想我需要一两分钟来编写代码才能在Perl中执行此操作,并在几分钟内完成测试.这是一项简单的工作.我甚至不确定如何在C/C++中实现它.我想你从一个stat
根目录开始.
但是每个掌握了shell脚本的人都在上下跳跃,挥手并大喊答案,因为你可以在输入代码时编写代码:
$ find /data -user test | xargs rm -rf
测试包括运行命令和查看错误.这个特殊的问题是在驾驶室中的垒球球bash
.Perl完成了工作,但它不那么自然了.(我会使用find2perl
,这只是增加了一步.)在C或C++中尝试这将是一个不切实际的任务.这些语言旨在解决不同的问题.
现在,如果你不在UNIXy环境中工作,可能有一个专门用于执行此类操作的工具集.(我不是专家,但在Windows中我可能会运行搜索以在一个窗口中获取所有文件,选择全部并删除.非常简单.但我不知道如何自动化它.)但是如果您打算在UNIX/Linux世界中找到一份工作,您必须熟悉命令行,这样您就不需要花费5分钟来完成30秒的工作.