学习linux shell脚本对我有多大的帮助/困难?其他建议?

学习linux shell脚本对我有多大的帮助/困难?其他建议?,linux,shell,Linux,Shell,我急需一些建议 我的计算机科学专业三年级快结束了。我觉得自己有点晚了,因为我直到大二才真正进入计算机科学。。。通过努力学习,一年中的大量学分和暑期学校,我几乎赶上了我的同龄人,但我的担忧来了: 我所有的学业都教会了我很多关于计算机科学的知识,但是很少有关于实际编程的知识。虽然我有很多动力,但我几乎没有空闲时间来完成一些辅助项目。这让我感到不安,原因有两个:1)我真的对这个领域非常感兴趣;2)我知道很多雇主喜欢看到有校外经验的学生 因此,我最近有了一个想法:如果我将Linux作为我的主要操作系统,

我急需一些建议

我的计算机科学专业三年级快结束了。我觉得自己有点晚了,因为我直到大二才真正进入计算机科学。。。通过努力学习,一年中的大量学分和暑期学校,我几乎赶上了我的同龄人,但我的担忧来了:

我所有的学业都教会了我很多关于计算机科学的知识,但是很少有关于实际编程的知识。虽然我有很多动力,但我几乎没有空闲时间来完成一些辅助项目。这让我感到不安,原因有两个:1)我真的对这个领域非常感兴趣;2)我知道很多雇主喜欢看到有校外经验的学生

因此,我最近有了一个想法:如果我将Linux作为我的主要操作系统,但尽可能地将自己限制在终端上,试图自然地(在谷歌的帮助下)熟悉命令行,并希望通过在线教程逐步学习shell脚本,那该怎么办

你认为这对一个有抱负的程序员有多大好处?它有多现实?对于几乎没有空闲时间的学生可以在校外学习的小项目,你还有其他建议吗


非常感谢您,我喜欢这个网站(和播客),并将感谢您的反馈。

好吧,对计算机科学有了很好的理解,所谓的“实用编程”并不难学。这并不是说要学的东西不多;然而,掌握计算机科学本质上意味着学习各种编程语言并不困难。你参加过操作系统课程吗?如果没有,你应该拿起所谓的恐龙书,开始研究它。Bash编程非常简单。你应该学习C等语言;与这些相比,shell编程相当简单。尽管如此,学习是很重要的。如果你没有学习过操作系统,那么如果你的课程值得一试的话,你肯定会把它作为你学位的一部分。在这门课程中,您应该完成许多练习,甚至实现您自己的简单shell也是一个非常常见的入门项目


无论如何,一定要开始学习Linux。查找Bash上的经典HowTos、内核编程等。就现实程度而言。。。我希望所有CS学生都能严格理解所有这些概念。我不允许一个学生在没有它的情况下获得学位

做你感兴趣的事情-如果Linux和shell脚本让你打开-用它运行。不过,现在有很多方法可以学习在Windows或OS X或任何其他操作系统上编写代码。您可以在多个平台上免费下载以下任何一个……PHP、Ruby、SQL Server、Oracle、Java、C、C#。。。。谷歌(当然也是如此)为你遇到的任何问题提供了所有你需要的文档


你是绝对正确的,“实践”方面才是真正重要的,它与你的学业有很大的不同。你自己做项目是对的——这是你真正掌握这些东西的唯一方法。在你做这件事的时候,确保你真的喜欢做这件事,而不仅仅是做这件事的想法。。。因为这需要很多耐心……

我绝对建议您至少学习C/C++的基础知识,以了解计算机是如何工作的

您还应该学习C#或Java的基础知识,以便了解托管世界和垃圾收集、字节码/IL、jit编译等概念

您至少应该浏览一下Ruby和Python的方向,以熟悉动态语言的概念

加入Rails、PHP或ASP.NET,了解web编程和MVC等概念

阅读单元测试、测试驱动开发、依赖注入/控制反转、ORM。让自己在源代码控制和持续集成的世界中感到舒适。至少看看维基百科的流行语,比如敏捷、scrum、精益和看板

如果你想在校外有任何经验,就让自己参与一个小型的开源项目。在我上面提到的任何语言、平台或框架上都有很多。你不必自己动手,也不必花很多时间。从小事做起,四处涉猎,提交一个bug修复或一个小的增量特性

这些都是当今编程领域非常重要的方面

我不确定Bash到底在哪里融入了这一切。它可以是一个非常有用的工具,可以让你的日常任务变得非常简单,但其他很多工具也可以。然而,我并不认为Bash会有助于教你很多关于现代编程的知识,并为你成为一名软件工程师做好准备


再说一次,我个人对Bash了解不多,所以可能我完全错了…

Shell脚本编写基本上是无用的。我是一个Linux爱好者,如果有必要,我可以编写一个shell脚本,但是任何通常需要shell脚本的任务都可以用Python中更像程序员的方式来完成。如果您需要很多脚本,可以将一些更有用的代码分解成可由多个脚本共享和使用的类。Python脚本的运行速度将比纯shell脚本快几个数量级。我发现shell脚本语法(例如Bash)不支持合适的数据结构。甚至Perl也是对纯shell脚本的改进

如果您希望扩展您的视野,请学习不同的编程语言和范例。如果你学的是Java,那就学习Python或Perl之类的动态语言,以及C或Pascal之类的低级语言。如果编写CLI应用程序,请编写具有
$ find /data -user test | xargs rm -rf