Shell-Programmierung macht Spaß. Aber Python auch. Menschen mit dem Hintergrund von C oder vor allem Menschen, die Windows verwenden, stimmen dem nicht zu. Menschen bevorzugen oft eine grafische Oberfläche als eine Befehlszeile. Das ist aber so total falsch. Die grafische Benutzeroberfläche ist für Personen gedacht, die der Meinung sind, dass die Software das tut, was in der Beschreibung angegeben ist. Das ist aber nicht immer der Fall. Insbesondere bei Shell-Programmierfenstern, bei denen Viren und Malware ein Chaos von der Größe eines Tornados angerichtet haben. Leute, die eine Befehlszeilenschnittstelle verwenden, stimmen normalerweise darin überein, dass das, was sie tun, richtig ist, und ich stimme ihnen zu, dass sie richtig sind.

Häufig stecken Sie normalerweise fest und der gesamte Computer hängt sich aufgrund einer einfachen Software auf der Basis einer grafischen Benutzeroberfläche auf. Das Arbeiten an einer Befehlszeilenschnittstelle ist oft eleganter, schneller und vor allem wissen Sie, was Sie ausführen. Aber auch hier ist die Verwendung von Shells und das Schreiben von Programmen nicht jedermanns Sache.

Außerdem wäre das Schreiben von Programmen in C oder Java viel schlimmer als die Verwendung einer Software auf der Basis einer grafischen Benutzeroberfläche in Windows. Ich verfluche hier weder C noch Java, es ist nur so, dass sie nicht für den täglichen Gebrauch geeignet sind. Und hier zeichnen sich Skriptsprachen wie Shell-Programmierung und Python-Sprachen aus. Heute befinden wir uns hier also im Krieg, der eher für kleinere als für größere Anwendungen geeignet ist. Oder ist es so, dass wir beide miteinander kombinieren und aus beiden etwas Neues und Besseres machen können? Lassen Sie uns einen genaueren Blick auf beide werfen und sehen, wohin sie uns führen.

Bash Shell Scripting

Shell Scripting ist wirklich großartig. Sie können die meisten Ihrer Aufgaben hier in nur einer Codezeile erledigen. Nehmen wir zum Beispiel diesen Code:

$ touch file.txt | echo -e 'Hallo \ n Neue \ n Welt \ n Hallo \ n Hallo' >> file.txt | cat file.txt | sortieren | uniq | wc -l

Wie Sie sehen, läuft hier eine Menge Shell-Scripting, aber was passiert genau? Zuerst das '| 'ist als das Rohr bekannt. Es wird verwendet, um die Ausgabe einer Datei auf eine andere zu übertragen. Die 'Touch'-Syntax wird verwendet, um eine beliebige Datei zu erstellen, und die Echo-Syntax wird verwendet, um eine beliebige Anweisung zu drucken. Die doppelten rechtsseitigen Pfeile ">>" dienen zum Einfügen der Ausgabe in eine beliebige Datei oder ein beliebiges Programm. Die 'cat'-Syntax wird verwendet, um den Inhalt einer Datei zu lesen. Sortieren wird verwendet, um alles in der richtigen Reihenfolge zu sortieren, und 'uniq' wird verwendet, um Duplikate aus der Sortierung zu entfernen. Das 'wc' wird zum Zählen von Zeilen verwendet und -l ist nur ein Flag zum Drucken dieser Zeilen. Alle diese verketteten Befehle führen also Folgendes aus.

  1. Zuerst wird eine Datei mit der Namensdatei mit der Erweiterung txt erstellt, um zu informieren, dass es sich um eine Textdatei handelt.
  2. Zweitens wird echo -e verwendet, um mehrere Wörter in der Datei file.txt zu drucken, und 'slash n' oder '\ n' wird verwendet, um eine neue Zeile einzugeben oder zur nächsten Zeile zu wechseln.
  3. Nach der Eingabe von Zeichenfolgen in die Datei wird die Datei gelesen, der Reihe nach sortiert und in die uniq-Syntax übertragen, um vorhandene Duplikate zu entfernen, in unserem Fall "Hallo".
  4. Zuletzt drucken wir die Anzahl der Zeilen mit 'wc -l', um sie zu zählen und auf dem Terminalbildschirm auszudrucken.

Obgleich das Obige nur eine Codezeile ist, kann es daher dazu neigen, kompliziert zu werden, wenn mehr Bedingungen eingefügt werden. Daher sind Shell-Skripte gut, können jedoch nicht immer für neue Aufgaben verwendet werden. Manchmal möchten Sie, dass die Dinge einfacher werden, so einfach wie eine grafische Benutzeroberfläche. Shell-Skripte eignen sich eigentlich sehr gut zum Ausführen von Batch-Skripten und zum Ausführen von wiederholten Jobs, weisen jedoch gleichzeitig einige Nachteile auf:

  1. Shell-Skripte werden mit zunehmender Größe in der Regel extrem kompliziert.
  2. Die Wiederverwendung von Skripten ist nahezu ausgeschlossen. Damit meine ich, dass Bash-Skripte in C- oder anderen Java-Codes extrem schwer einzufügen sind.
  3. Erweiterte Funktionen wie HTML-Parsing sind für Bash nicht einfach verfügbar.

Es gibt hier jedoch Python für die Rettung und den am besten geeigneten Ersatz dafür. Aber ist Bash Shell Scripting vollständig ersetzbar? Lass uns einen Blick darauf werfen.

Empfohlene Kurse

  • Online-Zertifizierungsschulung in J2EE Umfassend
  • Professionelles R-Programmiertraining
  • Online-Zertifizierungstraining in Go-Programmierung
  • Schulung zum Haskell-Programm

Python Shell Scripting

Python wird standardmäßig auf fast allen Linux- und UNIX-Systemen installiert. Manchmal hat die Distribution eine ältere Version, die jedoch mit einem einfachen Befehl aktualisiert werden kann. Die Python-Shell-Programmierung ist viel einfacher zu verstehen und auch für Anfänger übersichtlicher zu schreiben. Außerdem hat Python standardmäßig den Stil "Read Eval Print Loop", mit dem Sie neue Codes im Interpreter ausprobieren können. Die Verwendung von Python kann jedoch ohne die Hilfe von Bash-Shell-Skripten etwas schwierig sein. Außerdem haben wir in unserem vorherigen einzeiligen Programm die 'uniq'-Syntax verwendet, um Duplikate zu entfernen, aber es hat uns nicht gezeigt, was die Duplikate waren. Schreiben wir also ein Python-Programm, um dasselbe zu tun:

#! / usr / bin / env pythonimport sys # Importieren von Systemmodulen für die Arbeit mit Verzeichnisdateienwenn __name__ == "__main __": # Beginnen Sie hier mit einem leeren Wörterbuch. Dies wird als die Reihenfolge # bezeichnet. Alle Schlüssel in diesem Wörterbuch werden als Name angezeigt und die angegebenen Werte # geben an, wie oft ein bestimmter Name angezeigt wird. Order = () # sys.stdin ist ein Objekt, das für Dateien verwendet wird. Alle diese Funktionen, die angewendet werden

# Ein Dateiobjekt kann auch für sys.stdin verwendet werden.

zur Bestellung in sys.stdin.readlines ():

order = order.strip ()

wenn auftrag in aufträge:

Bestellungen (Bestellung) + = 1

sonst:

Bestellungen (Bestellung) = 1

Zur Bestellung zählen in orders.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (Anzahl, Reihenfolge))

Diese Datei liest nun zuerst die Eingabe aus dem sys.stdin-Objekt. Die gesamte Ausgabe wird in das Objekt sys.stdout geschrieben. Nachdem Sie dieses Skript erstellt haben, können Sie unter der Annahme, dass Sie es als order.py bezeichnet haben, einfach das folgende Shell-Skript im Terminal ausführen und die Gesamtanzahl aller doppelten Zeichenfolgen ermitteln.

$ cat file.txt | python order.py

In ähnlicher Weise können wir dies auch mithilfe der Sortiersyntax sortieren:

$ cat file.txt | python order.py | sort -rn

Python Shell vs Bash Shell Programmierskripte

Jetzt haben wir gesehen, wie wir Python- und Shell-Skripte kombinieren können, um eine Befehlskette zu erstellen und sie zusammen auszuführen. Lassen Sie uns nun einen Schritt weiter gehen und sehen, ob Python Bash Shell vollständig ersetzen kann.

Apropos Bash-Shell-Programmierung, was die Leistung angeht, übertrifft Bash den Mist aus Python. Aber wenn man es mit Datentypen und anderen fortgeschrittenen Sachen vergleicht, hat Bash nicht viel Kompatibilität. Die Startzeit eines Bash-Shell-Skripts beträgt 2, 8 Millisekunden, während die von Python 11, 1 Millisekunden beträgt. Um ehrlicher zu sein, Bash ist eine Allzwecksprache, genau wie Python, aber beide haben ihre eigenen Stärken und Schwächen. Die Bash-Shell-Programmierung ist das Standardterminal in den meisten Linux-Distributionen und daher immer schneller in Bezug auf die Leistung. Aber heißt das, dass es Python vollständig ersetzen kann? Nee. Bei großen Programmen wird Bash immer komplizierter, bei Python nicht. Python kann meines Wissens auch als objektorientierte Sprache verwendet werden. Wenn Sie nur ein Anfänger sind, kennen Sie möglicherweise nicht einmal den Unterschied zwischen den beiden. Python ist die eleganteste Skriptsprache, noch mehr als Ruby und Perl. Die Bash-Shell-Programmierung ist dagegen sehr gut geeignet, um die Ausgabe eines Befehls in einen anderen zu leiten.

Shell Scripting ist einfach und nicht so leistungsfähig wie Python. Es handelt sich nicht um Frameworks und es ist schwierig, mit webbezogenen Programmen mit Shell Scripting zurechtzukommen. Die wahre Kraft des Shell-Skripts liegt im Stream-Text-Editor oder sed, den Awk-Programmen und ähnlichen Apps.

Dateihandhabung und Entwicklung von Webanwendungen

Bash Shell Scripting funktioniert beim Umgang mit Dateien einwandfrei und schnell. Mit dem Umgang mit Dateien meine ich das Kopieren, Klonen von Datenträgern, das Schreiben von Backup-Apps für Netzwerke, FTP-Server, das Speichern von Dateieingaben und den späteren Zugriff sowie das Übertragen dieser Ausgaben auf eine andere Instanz mithilfe von Pipe. Python hingegen ist nützlicher für den Umgang mit Datenblöcken wie das Lesen von Daten aus einer Datei und das Verarbeiten von Daten. Wenn ich genauer bin, ist bash nicht einmal eine Programmiersprache. Es ist eher eine einfache Shell, die darauf abzielt, mit Systemdateien über die Befehlszeile umzugehen, damit der Prozess schneller und schneller wird.

Wenn Sie also die Bash-Shell-Programmierung richtig kennen, wissen Sie auch, dass Variablen und Bereiche in Bash extrem begrenzt sind. Python hingegen ist eher eine Shell-Skriptsprache als eine Programmiersprache. Wenn wir Bash als Programmiersprache bezeichnen, ist es eher so, als würde man sagen, dass Python eine objektorientierte Shell-Programmiersprache ist. Man kann mit Python objektorientiert umgehen, aber es wird niemals rein objektorientiert sein wie C oder Java. In ähnlicher Weise ist Bash jedoch eine Skriptsprache. Es wird eher als etwas verwendet, das erforderlich ist, um schnell mit Dateien umzugehen, als große Programme darin zu schreiben. Obwohl Python eine Shell-Skriptsprache ist, handelt es sich tatsächlich um eine eigene Shell. Wenn Sie beispielsweise alle Dateien, die sich auf dem Desktop befinden, über die Bash-Shell in ein anderes zufälliges Verzeichnis verschieben, geschieht Folgendes:

$ cd Desktop $ mv * randomDirectory

Andererseits ist es etwas komplizierter, dasselbe in Python zu tun. Es geht ungefähr so:

importiere os, glob für fname in glob.glob ('*'): os.rename (fname, 'randomdirectory')

Bestenfalls kann man es jedoch so kompakt machen:

Importiere os, glob (os.rename (fname, 'randomdirectory') für fname in glob.glob ('*')

Wenn man eine Sprache lernt, sagt man einem oft, wie man die Grundlagen und all diese Dinge sauber hält, aber man weiß nicht, wie man zuerst mit dem System selbst umgeht, das am wichtigsten ist. Außerdem sind Python und Bash beide Shell-Skriptsprachen, was bedeutet, dass beide hauptsächlich für den Umgang mit dem System und seinen Dateien entwickelt wurden.

Bash in Python?

Ja, du hast es richtig gelesen. Bis jetzt haben wir darüber gelesen, wie wir Python-Skripte in Shell einführen können. Wir können aber auch Shell-Skripte innerhalb der Skripte von Python einführen. Nehmen wir zum Beispiel: - Geben Sie in der Python-Shell 'apt-get update' ein? Sie werden offensichtlich einen Fehler wie ungültige Syntax bekommen. Wenn Sie also Bash-Codes wie 'ls, cd, mv' oder andere in Python verwenden möchten, müssen Sie das OS-Modul importieren. Jetzt mache eine Sache, kopiere den folgenden Code und füge ihn in die Shell von Python ein und überprüfe, wie es funktioniert:

$ python >>> vom Betriebssystem importieren * >>> System ('sudo apt-get update')

Und jetzt funktioniert es… yay. Dies ist ein weiterer Weg, um Python- und Bash-Skripte zusammenzubringen. Außerdem gibt es ein weiteres Python-Modul, das speziell für die Arbeit mit Bash entwickelt wurde. Dieses Modul ist als pexpect bekannt. Pexpect ist ein Python-Modul, mit dem untergeordnete Prozesse erzeugt, gesteuert und Ergebnisse gemäß der Anforderung des untergeordneten Prozesses zurückgegeben werden. Das pexpect-Modul verfügt über eine äußerst einfache Schnittstelle, um erforderliche Module und untergeordnete Prozesse zu importieren und entsprechend auszuführen. Man muss nur die Pip in ihrem System installieren, um pexpect zu installieren, und man kann das Modul wie folgt installieren:

$ pip install pexpect

Die Version von Pexpect benötigt eine Python-Version größer als 3.3 oder speziell 2.7.

Python und Bash zu vermischen, ist eigentlich viel mehr und nichts funktioniert besser als eine Mischung aus Python und Bash. Diese Mischung macht das Skript aufgrund von Bash schnell und aufgrund von Python einschließlich erweiterter Funktionen. Über pexpect und seine Dokumentation kann man unter https://pexpect.readthedocs.org/online nachlesen.

Empfohlene Artikel

In den folgenden Artikeln erfahren Sie mehr über Bash Scripting und Python. Gehen Sie einfach über den Link.

  1. Python vs JavaScript-wertvolle Unterschiede
  2. Top 25 Amazing Python Interview Fragen und Antworten
  3. Python vs JavaScript Unterschiede
  4. R Programmieren gegen Python
  5. PHP-Dateihandhabung