110 Stimmen

Stärken von Shell Scripting im Vergleich zu Python

Ich habe ein paar Mal versucht, Shell(Bash)-Skripte zu lernen, wurde aber von der Syntax vertrieben. Dann fand ich Python und konnte die meisten Dinge, die ein Shell-Skript kann, in Python erledigen. Ich bin mir jetzt nicht mehr sicher, ob ich meine Zeit in das Erlernen von Shell-Skripten investieren sollte. Deshalb möchte ich fragen:

Was sind die Stärken von Shell-Skripten, die sie im Vergleich zu Python zu einem unverzichtbaren Werkzeug machen?

Ich bin kein Systemadministrator von Beruf, aber ich interessiere mich für die Einrichtung von Linux-Systemen für Heimanwender, daher denke ich, dass das Erlernen von Shell-Skripten notwendig werden kann.

2 Stimmen

Neben Python gibt es noch andere Möglichkeiten. Kotlin unterstützt die Skripterstellung und kann eine gute Alternative zu Python sein, da es sowohl prägnant (wie Python) als auch typsicher ist. Wie bei Python müssen Sie sicherstellen, dass der Kotlin-Compiler auf Ihrem Computer installiert ist. Siehe eine Kotlin Hallo-Welt-Skript hier und eine Skript der realen Welt mit Bibliotheksabhängigkeiten hier . Außerdem ist Kotlin jetzt verfügbar auf GitHub Actions Umgebungen .

95voto

Jonathan Leffler Punkte 694013
  • Shell-Skripting hat einfachere Notationen für die E/A-Umleitung.
  • Einfacher ist es, Pipelines aus bestehenden Programmen in der Shell zu erstellen.
  • Beim Shell-Scripting werden ganze Programme wiederverwendet.
  • Shell ist universell verfügbar (auf allen Unix-ähnlichen Systemen) - Python ist nicht unbedingt installiert.

Es ist wahr, dass man in Python alles tun kann, was man in der Shell tun kann; es ist auch wahr, dass es Dinge gibt, die in Python einfach sind, aber in der Shell schwierig sind (genauso wie es Dinge gibt, die in der Shell einfach sind, aber in Python schwierig). Langfristig ist es am besten, wenn man beides beherrscht.

21 Stimmen

1 und 2, gute Punkte. #Nr. 3 ist eine Schwäche, da es zu einer Menge Overhead führt, den Python vermeiden kann. #Nr. 4 könnte weitgehend unwahr sein. Python ist jetzt Teil der meisten Linux-Distributionen.

0 Stimmen

Ich sehe den Overhead nicht. Haben Sie ein paar Zahlen?

0 Stimmen

Was Python angeht - ja, es ist so gut wie überall unter Linux verfügbar; allerdings ist nicht die ganze Welt eine Linux-Box. Davon abgesehen ist es für jede Unix-ähnliche Plattform verfügbar. Auf meinem Solaris-Rechner ist es jedoch etwas abseits installiert (/usr/sfw/bin/python); ich habe das Verzeichnis erst im letzten Jahr oder so gefunden.

58voto

S.Lott Punkte 371691

"Was sind die Stärken von Shell Scripting, die es im Vergleich zu Python zu einem unverzichtbaren Werkzeug machen?"

Die Schale ist nicht unerlässlich. Warum, glauben Sie, gibt es so viele? bash, tcsh, csh, sh, etc., etc,

Python es eine Muschel. Nicht die, die Sie zum Ausführen von alle Befehle, aber für die Skripterstellung ist es ideal.

Python ist ein mehr oder weniger standardmäßiger Bestandteil aller Linux-Distributionen.

Die traditionelleren Muscheln machen zu viele Dinge.

  1. Sie verfügen über eine praktische Benutzeroberfläche zur Ausführung von Befehlen. Dazu gehören einzeilige Befehle, bei denen die Shell Ihren PATH durchsucht, sich gabelt und das angeforderte Programm ausführt. Sie umfasst auch Pipelines, Sequenzen und nebenläufige Programme (mit ; , | y & ) sowie eine gewisse Umleitung (mit > y < ).

  2. Sie verfügen über eine schäbige kleine programmiersprachenähnliche Fähigkeit zur Ausführung von Skripten. Diese Sprache ist ziemlich schwer zu benutzen und extrem ineffizient. Die meisten Anweisungen in dieser Sprache erfordern das Forking eines oder mehrerer zusätzlicher Prozesse, was Zeit und Speicher vergeudet.

Das Ausführen von Programmen über die Shell, das Umleiten von stderr in eine Protokolldatei und dergleichen ist gut. Machen Sie das in der Shell.

Fast alles andere lässt sich effizienter und übersichtlicher in einem Python-Skript erledigen.

Sie brauchen beides . Sie sollten jedoch niemals ein Skript mit if-Anweisungen oder Schleifen in einer traditionellen Shell-Sprache schreiben.

0 Stimmen

-1. A) Das Vorhandensein einer Vielzahl verschiedener Shells bestätigt eher die Behauptung, dass eine Shell in irgendeiner Form für die Benutzung eines UNIX-Systems unerlässlich ist, als dass sie diese widerlegt. B) Der OP sprach von "UNIX-Shell", nicht nur von "Shell". Der Python-Interpreter ist keine UNIX-Shell, er ist eine Python-"Shell". Die Programmiersprache Python ist auf prozedurale Programmierung und Datenmanipulation ausgerichtet; Shellsprachen sind auf die Ausführung von Programmen und die Manipulation ihrer Ausgabe ausgerichtet. C) Ihr Punkt #2 könnte zutreffen, wenn keine der Skriptanweisungen Kontrollflussanweisungen sind wie if o while .

1 Stimmen

@intuited. A) Die Verbreitung verschiedener Shells zeugt von der Anzahl der Funktionen, die sich in "Shell" ansammeln; nicht ihre wesentliche Rolle, aber ihr Auffangbecken für Funktionen. B) Der Python-Interpreter ist eine richtige Unix-Shell, er verwendet #! C) Eine "einfache" Shell if Anweisung beinhaltet oft die Ausführung der test Programm. Die Shell ist in jeder Hinsicht eine lausige Programmiersprache.

4 Stimmen

@S. Lott: Es scheint, dass hier eine semantische Dissonanz vorliegt. Meine Definition einer UNIX-Shell wäre ein Interpreter, dessen Sprache in erster Linie darauf ausgerichtet ist, den Betrieb eines UNIX-Systems auf einer hohen Ebene zu steuern. Nach dieser Definition ist eine Shell in irgendeiner Form für den Betrieb eines UNIX-Systems sicherlich unerlässlich, und Python ist nicht dafür geeignet. Wie würden Sie diesen Begriff definieren?

38voto

Die Shell macht gewöhnliche und einfache Aktionen wirklich einfach, auf Kosten von komplexeren Dingen, die sehr viel komplizierter sind.

In der Regel ist ein kleines Shell-Skript kürzer und einfacher als das entsprechende Python-Programm, aber das Python-Programm wird in der Regel Änderungen akzeptieren, während das Shell-Skript immer weniger wartbar ist, je mehr Code hinzugefügt wird.

Dies hat zur Folge, dass Sie für eine optimale Produktivität im Alltag Shell-Skripte benötigen, diese aber hauptsächlich für Wegwerf-Skripte verwenden sollten, und Python für alles andere.

17voto

elzapp Punkte 1941

Es gibt nichts, was Sie mit Shell-Skripten tun können, was Sie nicht auch mit Python tun können. Der große Vorteil von Shell-Skripten ist, dass Sie dieselben Befehle verwenden, die Sie auch in der Shell verwenden. Wenn Sie also viel mit der Shell arbeiten, wird Shell-Skripten irgendwann eine sehr schnelle und einfache Möglichkeit sein, Ihre Shell-Arbeit zu automatisieren.

Ich finde es auch einfacher, mit Pipes von Daten in Shell-Skripten umzugehen als in Python, obwohl es in Python durchaus machbar ist.

Und schließlich müssen Sie keinen zusätzlichen Interpeter starten, um die Shell-Skripte auszuführen, was Ihnen einen sehr kleinen, aber manchmal vielleicht spürbaren Geschwindigkeits- und Speicherverbrauchsvorteil verschafft.

Aber andererseits sind Python-Skripte viel wartungsfreundlicher. Ich versuche, von großen, hässlichen Shell-Skripten auf Python-Skripte umzusteigen, genau aus diesem Grund. Außerdem ist es mit Python einfacher, Ausnahmen zu behandeln und die Qualitätssicherung durchzuführen.

11voto

adrianrf Punkte 111

Man muss nicht unbedingt shell-skripting lernen, wie alle vorherigen antworten zeigen; aber lernen ist nie eine schlechte sache. es ist wirklich eine frage der persönlichen prioritäten. es ist sehr schwer für jemand anderen, dir zu sagen, was deine zeit wert ist und was nicht.

Die meisten Programmierer stellen fest, dass das Erlernen neuer Sprachen von Mal zu Mal einfacher wird. (Dasselbe gilt weitgehend auch für natürliche Sprachen.) Und je früher man anfängt, desto besser.

plus: wenn du eine sprache gelernt hast, kannst du ihre begrenzungen aus einer Position völliger kenntnis und Vertrautheit heraus überspitzt darstellen. damit wirst du wahrscheinlich nicht flachgelegt, aber vielleicht bekommst du ein bier von deinen kollegen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X