Shell脚本的哪些功能与PHP / Python开发相关?[关闭]


28

我是一名学习Java和C#(。NET)的PHP / Python程序员。
我的主要开发操作系统是Windows 7,但我使用过Linux,目前与Ubuntu双重引导。但是,我的Linux知识非常有限。我可以在简单的任务上使用命令行,但是仅此而已。我不执行任何shell脚本编写,也不了解许多重要命令。

我的兴趣是网站开发,移动应用程序以及将来的一些嵌入式内容。Shell脚本编写技能是否对这些兴趣有用?如果是,怎么办?


9
谁在5年前告诉我“真正的人精通C ++,真正的人使用命令行并从软盘映像引导Linux”-真是太棒了!我想告诉他们“真正的男人”用他们的头,选择他们能找到的最佳工具。他们也知道如何在工作以外的生活中获得乐趣。女士们,很抱歉以人为中心的回答。“男人”我的意思是程序员,但这不是当时的措辞。
工作

3
谁以“真正的男人”作为争论的开始,要么是在开玩笑,要么是满嘴屎。但是,像这样的白痴不应该因为理解东西的价值而贬低,这些东西在一开始似乎很困难,shell编程与拖动GUI东西通常会带来很多麻烦。如果绝对需要某些以C ++为中心的因素,那么C ++是必经之路。(例如,高性能,或者本质上讲,是使用C或C ++库/现有代码库等。)-基本上,如果您不务实,请忽略此工作。
ocodo 2011年

6
@Slomojo:真正的男人爱他们的妻子和孩子,并善待他们。;)
Mason Wheeler

@梅森,你是王子先生。
ocodo 2011年

1
PHP / Python经常部署在Linux机器上,因为它们比Windows机器便宜。因此,如果您需要护理那些人,那么最好通过了解事物的工作方式和工作方式而受益。

Answers:


35

如果我正在为Windows应用程序(或Mac应用程序)编写代码,为什么我需要了解Linux?福特机械师应该认识约翰·迪尔的拖拉机吗?这一切都取决于您在做什么,是专业上还是您自己的“业余时间”。

现在,知道它并没有什么害处。实际上,我坚信“您知道的越多,身体就会越好”。


我问的原因是因为这些天以来Linux被认为是所有类型程序员的“必修课”。但是我可能是错的。
迈拓

@Max:只有知道如何使用它并且知道如何以及为什么要使用Linux时,它才会使您变得聪明。Linux源代码中嵌入了丰富的知识,但是就像Muad所说的那样,它不是必须的。
怪胎

1
如果他希望自己在生产环境中部署自己的程序,那么他将需要学习linux,这在大多数情况下都是linux。
dukeofgaming 2011年

@dukeofgaming,可以运行IIS和PHP没问题。linux会很不错,但是有必要吗?并不是的。
Muad'Dib 2011年

@dukeofgaming我从来没有将我的ASP.NET应用程序部署到Linux服务器上,我怀疑我是否会这样做!
Kirk Broadhurst,

29

如果您是PHP程序员,则一定要了解Linux。PHP是在Linux上创建的,PHP是LAMP堆栈的重要组成部分:Linux + Apache + MySQL + PHP。即使您现在有机会针对Windows服务器进行开发,您的下一份工作也可能是您针对Linux服务器进行开发,并且您将需要熟悉Linux环境,这样您才不会遇到与Window特定的'现象' PHP。

在移动应用程序领域,了解Linux将(可悲)与您要开发的环境没有多大关系。iPhone OS与Linux无关,而Android则将您紧密地束缚在虚拟机中,您永远不会知道下面有Linux。您可以在Meego或Maemo上为Linux编程,但是这些都远没有iPhone和Android受欢迎。

在嵌入式领域,您必须了解Linux。嵌入式Windows很少见,但嵌入式Linux相当普遍。(当然,裸机嵌入式编程也很常见,因此取决于您要去的地方。)

如果您对Linux进行了多年的深入学习,您将对内核,启动过程,命令行和GUI等系统的各个部分有一定的了解。


3
我同意嵌入式Linux在32位设备上相当普遍。但是,大多数嵌入式micros仍然是8位和16位,无法运行Linux。(您在“裸机”注释中提到了这一点,我只是澄清一下。)32位设备是增长最快的部分。
tcrosley 2010年

+1用于LAMP堆栈和嵌入式空间。希望您对初学者Unix / Linux程序员的书建议。
安东尼

17

在某种程度上,您可以在这里申请80/20的想法。实际上,不需要花很长时间就可以了解Linux的工作原理以及您需要从Shell那里了解的核心命令。同样,如果需要,基本的Apache配置非常方便。您不需要为此花费很多时间,但是如果您必须运行自己的服务器,那么当然值得学习足够的基础知识。

这是一条好线。如果您不小心,很快就会发现Windows逐渐使您逐渐适应Linux提供的功能……


12
+1-如果您想继续使用Windows,请不要学习Linux。
孟格斯·庞

6
+1-[令人讨厌地举起手]嗯。我叫Inaimathi ...而且,我是Windows的前用户。
Inaimathi 2010年

6

您不必学习它,但是它将使您成为更好的程序员。您将学习如何以不同于Windows的方式来做事。使用任何* sh shell最终将导致脚本编写和使用正则表达式,自动安装,解析大文件等。

我不在乎因为不了解而被嘲笑,就像我每次学习如何在Linux中做其他事情一样,我都在乎它有多酷。每增加一个新点,它就会变得越来越好。

Powershell有很多来自尼克斯世界的东西,他们最终意识到,要实现自动化,您需要一个好的控制台(为此,对MS表示敬意)。Perl和Python似乎都是C,bash,sed,awk的混合物,它们都以自己的方式融合为一件好事。

至少,您的简历中还有其他内容,但这并不是您能从中得到的最好的东西。

我敢肯定,您会发现自己的东西可以带您去:“哇,太酷了!” 我的第一个方法是能够使用USR1信号“杀死” Apache,以使其重新加载新的配置文件并重新启动日志,而无需停止服务并继续接收连接。还ssh和rsync,令人难过的是,为什么MS不能将它们移植到我之外。


+1用于显示MS向外壳方式移动,并且没有完全这样做!
2011年

4

不会伤害你的 即使在一家全微软公司中,至少会遇到几台Linux服务器的可能性也越来越高。例如,Stack Overflow将Linux用于其负载均衡器。当虚拟化发挥作用时,尤其如此。

作为程序员,考虑考虑熟悉POSIX,而不仅仅是一个类似UNIX的变体,可能会做得更好。尽管它确实有一些古怪之处,但它代表了许多努力,以令人难以置信的尝试建立了(大多数情况下)可在所有类似UNIX的环境中移植的标准接口。注意,许多类似UNIX的系统并非100%“正确”,但这是一个很好的起点。

作为一个临时用户,我只能建议在新事物中闲逛并学习新事物很有趣。我想每个人可能想到的每个操作系统都可能成为“专家”,但我认为这不是程序员最有用的努力。尽管如此,您可能会遇到的东西的实用知识还是不错的..从您的问题出发,您似乎将来可能会遇到Linux。


+1我对linux的了解(我已经管理了linux web服务器多年)对“ Microsoft”开发有很大帮助。实际上,每个解决方案都是问题。

熟悉Linux发行版(可以使用的实际软件系统)和POSIX(抽象规范)是两个非常不同的方面。如果您熟悉一个Unix或类似Unix的操作系统(Mac OSX在很大程度上被排除在外),那么您就可以轻松地将知识转移到另一个操作系统。
David Thornley,2010年

3

是的,但是您听起来好像不需要积极学习它。

对我来说,我对Linux的熟悉是通过将Linux用作工作OS来开发的。我逐步了解了我想知道的事情,并继续这样做。互联网上充斥着有关如何执行wrt linux所需的所有工作的资源,因此我建议您精通阅读手册页和文档,并让您的大脑吸收(并忘记)如何完成操作的细节具体任务随您去

话虽这么说,但是由于对Linux没有基本的了解,肯定会避开一些命令。


3

在我所从事的五份工作中的最后四份中,开发人员和质量检查人员(至少已开始)在Windows上工作,但是测试和生产服务器是Linux / UNIX。他们所有人都需要至少了解少量的UNIX,才能至少能够进入测试服务器并查看日志或在“真实”环境中调试正在运行的程序。实际上,过去20年中,针对Windows的开发很少。

在这里与他人相呼应,对您的工作或职业几乎没有“必要”,但这将有助于您了解自己的工作,所用语言或系统的好处和局限性。


2

恕我直言,对于一个能干的程序员来说,了解Linux / Unix将是迈向更重要的Unix哲学的伟大垫脚石。


2

当我参加“操作系统计算机科学”课程时,我们研究了基于UNIX的操作系统,并在RedHat上进行了工作,因为它是开源的,因为我们可以看到代码,并且可以用它做一些事情,但这在视窗。

我想说的是,如果您要学习操作系统在幕后工作的基础知识,那么即使在学术环境中,您也应该对Linux有一定的经验。

我刚刚从Ubuntu 10.04切换回Windows 7。如果没有grep和其他一些命令行工具,我会感到有些迷茫。我更喜欢在Linux环境中进行开发,因为我觉得该系统更适合于高级用户和开发人员。

我确实知道大学毕业的非常好的.NET程序员,他们对Linux一无所知,所以这不是必需的,但是我希望拥有5年以上编程经验的任何人都可以以一种或另一种形式接触Linux。他们的职业生涯中的时间。

您必须是您专注于什么的判断者;然而。如果目前您有开发移动应用程序的途径,并且知道Linux不是真正的要求,那么您可能会专注于更多地了解移动SDK而不是Linux。一切都有一个权衡,听起来您确实对Linux有一些基本了解,可以在需要时了解更多有关Linux的知识。


2
我一直在Windows机器上安装grep等,这是必需的。
2011年

1

以下任何一项困扰您吗?

  1. 您不能/不应将Linux放在简历中。
  2. 您没有资格在纯粹的Linux商店工作。
  3. 您当前的工作需求和通过自学学习Linux的兴趣水平不存在,因此您在Linux方面的情况不会改变。
  4. 非Windows开发人员会嘲笑您(也许不露面)。

您仍然可以追求大量的工作机会和职业道路。我并不是说这些“应该”打扰您。坦白讲自己,并留意整个行业,尤其​​是Linux,以了解您的发展道路是否可行。毫无疑问,您可以在时间到时弄清楚。谁知道,一个Linux项目明天就可以实现。


1

我一直在Windows环境中进行编码。对我来说,Linux曾经是我备份的另一个操作系统,以防Windows遇到麻烦。我只知道基本命令,而我尝试执行的所有操作似乎都很困难。但是现在,在我目前作为Web开发人员的工作中,我们都使用Linux,因此我不得不学习Linux,并将其用于所有方面。我使用它的次数越多,我就越喜欢它,并且我认为它更具生产力和灵活性。我很遗憾以前没有对Linux感到困惑。现在我正在追赶。

因此,是的,您应该尽可能地学习它。


1

Linux是工具箱中的工具,就像Windows“只是”工具一样。都流利地使您可以做一些更好的事情,但与其他事情无关。

我个人发现Ubuntu形式的Linux非常有用,因为它使我可以轻松地在虚拟机中创建和维护数据库服务器,邮件服务器,测试Web服务器等内容,而无需考虑许可证成本(加上服务器版本比Windows需要更少的资源)。如果您不执行任何这些操作,那么我认为Linux对您而言并不重要。


0

不知足,如果您打算部署到特定的操作系统,那么你就可以确保你的应用程序的工作就可以了,否则......你不知道的任何事情/一切。


如果要在与开发不同的操作系统上进行部署,则可能需要大量有关新操作系统的知识。一个主要因素是您的应用程序中存在多少底层功能(即任何串行端口类型的访问)
Patrick

0

除非我使用.NET,否则我更喜欢使用Linux。与WAMP相比,LAMP堆栈对我来说更自然。

如果您有兴趣学习除Microsoft以外的其他知识,我绝对建议您学习它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.