Welche Features von Shell Scripting sind für die PHP / Python-Entwicklung relevant? [geschlossen]

28

Ich bin ein PHP / Python-Programmierer, der Java und C # (.NET) lernt.
Mein Hauptentwicklungs-Betriebssystem ist Windows 7, aber ich habe Linux verwendet und derzeit mit Ubuntu dual gebootet. Mein Linux-Wissen ist jedoch ziemlich begrenzt. Ich kann mit der Kommandozeile an einfachen Aufgaben arbeiten, aber das war's auch schon. Ich mache kein Shell-Scripting und kenne nicht viele wichtige Befehle.

Meine Interessen sind Web-Entwicklung, mobile Apps und möglicherweise einige eingebettete Dinge in der Zukunft. Werden Shell-Skriptfähigkeiten für diese Interessen nützlich sein und wenn ja, wie?

Maxtor
quelle
9
Wer hat mir vor 5 Jahren gesagt "Echte Männer beherrschen C ++ fließend, echte Männer benutzen die Kommandozeile und booten ihr Linux von einem Disketten-Image" - fvck you! Ich möchte ihnen sagen, dass "echte Männer" ihren Kopf benutzen und das beste Werkzeug auswählen, das sie für den Job finden können. Sie wissen auch, wie man Spaß am Leben außerhalb der Arbeit hat. Meine Damen, entschuldigen Sie die mannszentrierte Antwort. Mit "Männern" meine ich Programmierer, aber so wurde es damals nicht formuliert.
Job
3
Wer mit "Real Men" streitet, scherzt oder scheißt. Solche Idioten sollten jedoch den Wert des Verständnisses von Dingen, die anfangs schwierig zu sein scheinen, nicht beeinträchtigen. Shell-Programmierung oder das Verschieben von GUI-Dingen sind häufig um ein Vielfaches effizienter. Und wenn bestimmte C ++ - zentrierte Faktoren unbedingt erforderlich sind, ist C ++ der richtige Weg. (z. B. hohe Leistung oder im Wesentlichen die Verwendung einer C- oder C ++ - Bibliothek / vorhandenen Codebasis ... usw.) - Wenn Sie nicht pragmatisch sind, vergessen Sie im Grunde diese Vorgehensweise.
ocodo
6
@ Slomojo: Echte Männer lieben ihre Frauen und Kinder und behandeln sie gut. ;)
Mason Wheeler
@Mason, Sie sind ein Prinz, Sir.
ocodo
1
PHP / Python wird häufig auf Linux-Boxen eingesetzt, da diese billiger sind als Windows-Boxen. Wenn Sie diese also pflegen müssen, ist es besser, wenn Sie wissen, wie die Dinge funktionieren und was Sie tun.

Antworten:

35

Wenn ich eine Windows-App (oder eine Mac-App) codiere, warum sollte ich Linux kennen müssen? Sollte ein Ford-Mechaniker John Deer-Traktoren kennen? Es hängt alles davon ab, was Sie beruflich tun, oder von Ihrer eigenen "Hobby" -Zeit.

Nun, es tut nicht weh, es zu wissen. In der Tat bin ich fest davon überzeugt, "je mehr Sie wissen, desto besser geht es Ihnen".

Muad'Dib
quelle
Ich habe gefragt, warum Linux heutzutage für Programmierer aller Art ein Muss ist. Ich kann mich jedoch irren.
Maxtor
@Max: Es wird Sie nur schlau machen, wenn Sie wissen, wie man es benutzt und wie und warum Linux es tut. In den Linux-Quellcode ist viel Wissen eingebettet, aber wie Muad sagte, ist es kein MUSS.
Geek
1
Er muss Linux lernen, wenn er jemals erwartet, seine Programme selbst in einer Produktionsumgebung bereitzustellen, bei der es sich zumeist um Linux handeln kann.
Dukeofgaming
@dukeofgaming, Sie können IIS und PHP problemlos ausführen. Linux wäre GUT zu lernen, aber notwendig? nicht wirklich.
Muad'Dib
@dukeofgaming Ich musste meine ASP.NET-Apps noch nie auf einem Linux-Server bereitstellen, und ich bezweifle, dass ich das jemals tun werde!
Kirk Broadhurst
29

Wenn Sie ein PHP-Programmierer sind, sollten Sie unbedingt Linux kennen. PHP wurde unter Linux erstellt und ist ein wichtiger Bestandteil des LAMP-Stacks: Linux + Apache + MySQL + PHP. Selbst wenn Sie jetzt die Möglichkeit haben, für Windows-Server zu entwickeln, müssen Sie sich bei Ihrem nächsten Job wahrscheinlich für Linux-Server entwickeln. Außerdem müssen Sie mit der Linux-Umgebung vertraut sein, damit Sie nicht mit Windows-spezifischen Ismen in Konflikt geraten von PHP.

Im Bereich mobiler Apps hat das Wissen um Linux (leider) nur eine geringe Relevanz für die Umgebungen, für die Sie entwickeln. Das iPhone-Betriebssystem hat nichts mit Linux zu tun, und Android hat Sie so eng mit einer virtuellen Maschine verbunden, dass Sie nie wissen werden, dass Linux unter Ihnen ist. Sie könnten für Linux auf Meego oder Maemo programmieren, aber diese haben bei weitem nicht die Popularität des iPhone und Android.

Im Embedded - Bereich, Sie haben Linux zu kennen. Embedded Windows ist selten, aber Embedded Linux ist weit verbreitet. (Natürlich ist auch Bare-Metal-Embedded-Programmierung weit verbreitet, es kommt also darauf an, wohin Sie wollen.)

Wenn Sie sich über mehrere Jahre mit Linux vertraut gemacht haben, haben Sie ein gewisses Verständnis für jeden Teil des Systems, vom Kernel über den Startvorgang bis hin zur Befehlszeile und der grafischen Benutzeroberfläche.

Ken Bloom
quelle
3
Ich bin damit einverstanden, dass Embedded Linux für 32-Bit-Geräte weit verbreitet ist. Die Mehrheit der eingebetteten Mikros sind jedoch immer noch 8 und 16 Bit, auf denen Linux nicht ausgeführt werden kann. (Sie haben dies in Ihrem "Bare-Metal" -Kommentar angedeutet, ich möchte nur ein wenig erläutern.) 32-Bit-Geräte sind jedoch das am schnellsten wachsende Segment.
Tcrosley
+1 für LAMP-Stapel und eingebetteten Speicherplatz. Würde Ihre Buchempfehlungen zu diesem Thema für Anfänger-Unix / Linux-Programmierer lieben.
Anthony
17

Es gibt ein gewisses Maß an 80/20 Denken, das Sie hier anwenden können. Das Erlernen der Grundlagen der Funktionsweise von Linux und der Kernbefehle, die Sie von der Shell kennen müssen, dauert nicht allzu lange. Ebenso ist die grundlegende Apache-Konfiguration sehr praktisch, wenn Sie sie benötigen. Sie müssen sich nicht jahrelang damit befassen, aber es lohnt sich auf jeden Fall, genug über die Grundlagen zu lernen, die Sie erhalten könnten, wenn Sie Ihren eigenen Server betreiben müssten.

Es ist jedoch eine feine Linie. Wenn Sie nicht aufpassen, können Sie schnell feststellen, dass Windows Sie wirklich anhört, wenn Sie sich an das gewöhnen, was Linux bietet ...

Glenatron
quelle
12
+1 - Lerne Linux nicht, wenn du weiterhin Spaß mit Windows haben möchtest.
Mongus Pong
6
+1 - [hebt verlegen die Hand] Ähm. Mein Name ist Inaimathi ... und ich bin ein ehemaliger Windows-Benutzer.
Inaimathi
6

Sie müssen es nicht lernen, aber es macht Sie zu einem besseren Programmierer. Sie werden lernen, Dinge anders zu machen als unter Windows. Die Verwendung einer der * sh-Shells führt schließlich zur Skripterstellung und zur Verwendung regulärer Ausdrücke, zur Automatisierung von Installationen, zum Parsen großer Dateien usw.

Es ist mir egal, dass ich verspottet werde, weil ich es nicht weiß, ebenso wie es mir wichtig ist, wie cool es ist, wenn ich lerne, wie man etwas anderes unter Linux macht. Mit jedem neuen Stück wird es immer besser.

Powershell hat eine Menge, die aus der Nix-Welt kommt. Endlich wurde ihnen klar, dass man eine gute Konsole braucht, um automatisiert zu werden (ein großes Lob an MS dafür). Sowohl Perl als auch Python scheinen eine Mischung aus C, bash, sed, awk zu sein, die alle auf ihre eigene Weise zu einer guten Sache verschmolzen sind.

Zumindest müssen Sie noch etwas in Ihren Lebenslauf aufnehmen, aber das ist wirklich nicht das Beste, was Sie daraus machen können.

Ich bin sicher, Sie werden auf Ihren eigenen Sachen finden, die Sie gehen lassen: "Wow, das ist so cool!" Mein erster Versuch war, Apache mit einem USR1-Signal "zu töten", um eine neue Konfigurationsdatei zu laden und die Protokolle neu zu starten, ohne den Dienst jemals zu stoppen und weiterhin Verbindungen zu erhalten. Auch ssh und rsync, gute Trauer, warum MS sie nicht portieren würde, ist mir ein Rätsel.

Marlon
quelle
+1 Um zu zeigen, dass sich die MS in Richtung der Muschel bewegt und dies nicht vollständig tut!
Orbling
4

Es wird dir nicht weh tun. Selbst in einem Microsoft-Unternehmen wird es immer wahrscheinlicher, dass Sie auf mindestens einige Linux-Server stoßen. Zum Beispiel verwendet Stack Overflow Linux als Load-Balancer. Dies gilt insbesondere dann, wenn Virtualisierung ins Spiel kommt.

Als Programmierer könnten Sie es besser machen, wenn Sie sich mit POSIX vertraut machen, nicht nur mit einer einzelnen UNIX-ähnlichen Variante. Obwohl es einige Macken hat, ist es ein großer Aufwand, der einen unglaublichen Versuch darstellt, eine Standardschnittstelle zu erstellen, die (meistens) in allen UNIX-ähnlichen Umgebungen portierbar ist. Beachten Sie, dass viele UNIX-ähnliche Systeme nicht zu 100% "posix-korrekt" sind, aber dies ist ein guter Ausgangspunkt.

Als Gelegenheitsnutzer kann ich nur vorschlagen, dass es Spaß macht, in etwas Neuem herumzustöbern und Neues zu lernen. Ich denke, es ist möglich, mit jedem denkbaren Betriebssystem ein "Guru" zu sein, aber ich denke nicht, dass dies das nützlichste Unterfangen für einen Programmierer ist. Trotzdem sind gute Kenntnisse der Dinge, auf die Sie stoßen könnten, gut. Aus Ihrer Frage geht hervor, dass Sie in Zukunft wahrscheinlich auf Linux stoßen werden.

Tim Post
quelle
+1 Meine Linux-Kenntnisse (ich habe jahrelang Linux-Webserver verwaltet) haben mir bei meinen "Microsoft" -Entwicklungen sehr geholfen. Tatsächlich ist jede Lösung ein Problem.
Das Kennenlernen einer Linux-Distribution (die ein aktuelles Softwaresystem ist, mit dem Sie spielen können) und POSIX (eine abstrakte Spezifikation) sind zwei sehr unterschiedliche Dinge. Wenn Sie sich mit einem Unix- oder Unix-ähnlichen Betriebssystem (mit Ausnahme von Mac OS X) vertraut machen, können Sie Ihr Wissen problemlos auf ein anderes übertragen.
David Thornley
3

Ja, aber Sie hören sich nicht so an, als müssten Sie es aktiv studieren.

Für mich entwickelte sich meine Vertrautheit mit Linux durch die Verwendung als mein Arbeitsbetriebssystem. Stück für Stück lernte ich die Dinge, die ich wissen musste, als sie auftauchten, und fuhr fort, dies zu tun. Das Internet ist voll von Ressourcen, die Ihnen zeigen, wie Sie fast alles tun können, was Sie für Linux benötigen. Stattdessen empfehle ich Ihnen , die Manpages und Dokumentationen gut zu lesen und Ihr Gehirn die Details zu erfassen (und zu vergessen), wie dies erreicht werden soll bestimmte Aufgaben, wie Sie gehen .

Davon abgesehen gibt es sicherlich ein paar Befehle, die Sie von der Linux-Welt meiden werden, wenn Sie nicht über grundlegende Kenntnisse verfügen.

instanceofTom
quelle
3

In den letzten vier von fünf Jobs, in denen ich gearbeitet habe, haben die Entwickler und QA (zumindest begonnen) an Windows gearbeitet, aber die Test- und Produktionsserver waren Linux / UNIX. Alle von ihnen mussten mindestens eine kleine Menge von UNIX kennen, um zumindest auf die Testserver zugreifen und die Protokolle anzeigen oder ein laufendes Programm in der "realen" Umgebung debuggen zu können. In den Unternehmen der letzten 20 Jahre ist eigentlich nur sehr wenig Entwicklung für Windows vorgesehen.

Wenn Sie hier auf andere zurückgreifen, ist für Ihren Job oder Ihre Karriere möglicherweise nur sehr wenig "notwendig", aber es hilft Ihnen dabei, Ihre eigene Arbeit, die Vor- und Nachteile der von Ihnen verwendeten Sprache oder des von Ihnen verwendeten Systems besser zu verstehen.

Arcege
quelle
2

IMHO, für einen kompetenten Programmierer, der Linux / Unix kennt, wäre dies ein großartiger Sprung in eine noch wichtigere Unix-Philosophie

Maglob
quelle
2

Als ich den Kurs Betriebssystem-Informatik belegte, haben wir UNIX-basierte Betriebssysteme studiert und RedHat bearbeitet, weil es Open Source war und weil wir den Code sehen konnten und weil wir damit Dinge tun konnten, die in einfach nicht möglich waren Windows.

Ich würde sagen, wenn Sie die Grundlagen der Funktionsweise von Betriebssystemen unter der Haube erlernen möchten, sollten Sie wahrscheinlich Erfahrung mit Linux haben, auch wenn es sich nur um eine akademische Umgebung handelt.

Ich bin gerade von Ubuntu 10.04 auf Windows 7 umgestiegen. Ich fühle mich etwas verloren ohne grep und einige der anderen Kommandozeilen-Tools. Ich bevorzuge die Entwicklung in einer Linux-Umgebung, da ich der Meinung bin, dass das System für Power-User und Entwickler günstiger ist.

Ich kenne wirklich gute .NET-Programmierer, die das College abgeschlossen haben und nichts über Linux wissen. Das ist also keine Voraussetzung, aber ich würde erwarten, dass jeder mit mehr als 5 Jahren Programmiererfahrung Linux in der einen oder anderen Form kennengelernt hat Zeit in ihrer Karriere.

Sie müssen beurteilen, worauf Sie sich konzentrieren. jedoch. Wenn es derzeit einen Weg für Sie gibt, mobile Apps zu entwickeln, und wenn Sie wissen, dass Linux nicht unbedingt erforderlich ist, konzentrieren Sie sich möglicherweise darauf, mehr über die mobilen SDKs zu erfahren, anstatt über Linux. Es gibt einen Kompromiss für alles, und es scheint, als hätten Sie eine grundlegende Erfahrung mit Linux, in der Sie bei Bedarf mehr darüber erfahren können.

jmort253
quelle
2
Ich hatte schon immer grep et al auf meinen Windows-Boxen, sie sind eine Notwendigkeit.
Orbling
1

Stört Sie eines der folgenden Dinge?

  1. Sie können / sollten Linux nicht in Ihren Lebenslauf aufnehmen.
  2. Sie sind nicht qualifiziert, für einen reinen Linux-Shop zu arbeiten.
  3. Ihre aktuellen beruflichen Anforderungen und Ihr Interesse, Linux im Selbststudium zu erlernen, sind nicht vorhanden, sodass sich Ihre Situation in Bezug auf Linux nicht ändert.
  4. Nicht-Windows-Entwickler werden Sie verspotten (möglicherweise nicht auf Ihr Gesicht.).

Es gibt Unmengen von Beschäftigungsmöglichkeiten und Karrierewegen, die Sie noch verfolgen können. Ich sage nicht, dass Sie eines dieser Dinge stören sollte. Seien Sie einfach ehrlich zu sich selbst und beobachten Sie die Branche im Allgemeinen und Linux im Besonderen, um festzustellen, ob sich Ihre Wege kreuzen. Kein Zweifel, Sie könnten es herausfinden, wenn die Zeit gekommen ist. Wer weiß, vielleicht kommt morgen ein Linux-Projekt auf Sie zu.

JeffO
quelle
1

Ich habe immer in der Windows-Umgebung codiert. Für mich war Linux einfach ein anderes Betriebssystem, das ich als Backup haben würde, falls mein Windows in Schwierigkeiten geraten sollte. Ich kannte nur grundlegende Befehle und alles, was ich zu tun versuchte, schien schwierig zu sein. Aber jetzt, bei meiner derzeitigen Tätigkeit als Webentwickler, verwenden wir alle Linux, so dass ich gezwungen bin, es zu lernen und es für alles zu verwenden. Je mehr ich es benutze, desto mehr gefällt es mir und ich denke, es ist viel produktiver und flexibler. Ich bedaure, dass ich noch nie mehr mit Linux gearbeitet habe. Jetzt hol ich nur noch auf.

Also ja, du solltest es lernen, wann immer du kannst.

Chiurox
quelle
1

Linux ist ein Tool in Ihrer Toolbox, genauso wie Windows "nur" ein Tool ist. Beides fließend zu beherrschen, ermöglicht es Ihnen, einige Dinge besser zu machen, ist jedoch für andere Dinge irrelevant.

Persönlich fand ich Linux in Form von Ubuntu sehr nützlich, da es mir ermöglicht, auf einfache Weise Dinge wie einen Datenbankserver, einen Mailserver, einen Test - Webserver und vieles mehr in virtuellen Maschinen zu erstellen und zu warten, ohne die Lizenzkosten (zzgl Die Serverversionen erfordern weniger Ressourcen als Windows. Wenn Sie keines dieser Dinge tun, wird Linux für Sie wahrscheinlich keine Rolle spielen.


quelle
0

Genug wissen , dass , wenn Sie beabsichtigen , auf ein bestimmtes Betriebssystem zu implementieren, dann können Sie sicherstellen , dass Ihre Anwendung auf es funktioniert, aber sonst ... Sie nicht haben nichts / alles wissen.

Steven Evers
quelle
wenn Sie auf einem anderen Betriebssystem bereitstellen , als Sie entwickelt auf, Sie könnten eine Menge Wissen über das neue Betriebssystem benötigen. Ein großer Faktor ist, wie viel Funktionalität auf niedrigerer Ebene in Ihrer Anwendung vorhanden ist (dh jeder serielle Port-Typ-Zugriff)
Patrick
0

Sofern ich nicht .NET mache, bevorzuge ich Linux. Der LAMP-Stack fühlt sich für mich natürlicher an als WAMP.

Ich würde definitiv empfehlen, es zu lernen, wenn Sie überhaupt Interesse daran haben, etwas anderes als das Microsoft-Zeug zu lernen.

TaylorOtwell
quelle