Ich wette, du wusstest nicht, dass du Shell-Skripte in Python schreiben kannst.
Für jeden Programmierer oder Systemadministrator ist das Shell-Scripting eine wichtige Fähigkeit, die es zu meistern gilt. Es ermöglicht Ihnen, langwierige Aufgaben zu automatisieren und sie in konsistente, wiederholbare Aktionen umzuwandeln. Das Problem ist, dass es ein wenig entmutigend sein kann, besonders wenn man bedenkt, dass die meisten Shell-Scripting-Dialekte nicht die syntaktische Finesse haben, die man in Python und Ruby findet.
Ich werde noch stumpfer sein. Die meisten Shell-Skripte sind hässlicher als der durchschnittliche Mops.
Darüber hinaus gibt es eine Vielzahl von Shells für UNIX-ähnliche Plattformen, darunter Bash, CSH, KSH und (mein Lieblings-) FISH. Daher kann das Schreiben konsistenter Shell-Skripts, die auf jeder Plattform funktionieren, eine Herausforderung darstellen.
Es muss einen besseren Weg geben, oder?
Einführung von sh.py
Es gibt. Wenn ich nicht für MakeUseOf schreibe, schreibe ich Code in Python für Spaß und Gewinn. Ich mag Python aufgrund seiner Flexibilität, seiner inhärenten Schönheit und wie es das Schreiben von gutem Code durch Design erfordert. Wenn das für Sie gut klingt, aber Sie diese tolle Sprache noch nicht kennen, warum sollten Sie nicht diese fünf großartigen Websites ausprobieren, um Python-Programmierung zu lernen. Die 5 besten Websites zum Erlernen der Python-Programmierung Die 5 besten Websites zum Erlernen der Python-Programmierung Im letzten Jahrzehnt ist die Programmiersprache Python bei Programmierern in allen Bereichen des Codierens an Popularität gewonnen. Von Web-Entwicklern über Videospiel-Designer bis hin zu Inhouse-Tool-Machern sind viele Menschen in ... Weiterlesen?
Ich bin vor ein paar Monaten auf diese wirklich geniale Bibliothek namens sh.py gestoßen, mit der man Programme aufrufen, Parameter übergeben und Ausgaben verarbeiten kann, alles innerhalb der Grenzen eines Python-Programms.
Also, was bedeutet das? Einfach ausgedrückt bedeutet dies, dass Sie die volle Funktionalität von Shell-Skripten haben, aber aus einer leicht lesbaren Sprache, die modular aufgebaut ist und objektorientierte Programmierung unterstützt. Cool, oder?
Also, wie benutzen wir es?
Ich mache ein paar Annahmen über dich. Das erste ist, dass Sie Linux, OS X oder FreeBSD ausführen. Wie es jetzt ist, funktioniert sh.py unter Windows nicht. Bei Bedarf können Sie jedoch immer eine virtuelle Linux-Maschine installieren. Mein Kollege Justin Pot hat einen ziemlich nützlichen Artikel darüber geschrieben, den Sie hier lesen können. Wie man VirtualBoxes verwendet Kostenlose Bilder zum Testen und Ausführen von Open Source-Betriebssystemen [Linux] Wie man VirtualBoxes Free Images verwendet, um Open Source-Betriebssysteme zu testen und auszuführen [Linux] Testen Sie schnell eine Vielzahl von Open Source-Betriebssystemen, von denen Sie einige kennen und die anderen nicht. Sie können nun bei Virtualboxes surfen, einer Website, die fast die ganze Arbeit erledigt ... Lesen Sie mehr.
Die zweite Annahme, die ich mache, ist, dass Sie eine aktuelle Version von Python (entweder 2.7 oder 3.2) ausführen und dass der PIP-Paket-Manager installiert ist. Wenn dies nicht der Fall ist, sehen Sie sich die offizielle Python-Dokumentation an.
Alles gut? Dann werden wir fortfahren.
Beginnen wir mit der Codierung
Installieren Sie in einem Terminal sh.py mit dem folgenden Befehl.
sudo pip installieren sh
Der Grund, warum wir hier 'sudo' verwenden, ist, dass wir unsere Berechtigungen erhöhen müssen, um neue Python-Pakete hinzuzufügen. Wenn sh.py korrekt installiert wird, sehen Sie die folgenden Zeilen in Ihrem Terminal.
Herunterladen / Entpacken sh Herunterladen sh-1.09.tar.gz Ausführen von setup.py ei_info für Paket sh Installieren von gesammelten Paketen: sh Ausführen von setup.py install für sh Erfolgreich installiert sh Aufräumen ...
Wenn es das nicht sagt, sind die Chancen gut, dass Ihre Installation fehlgeschlagen ist. Traurig. Wenn das der Fall ist, versuchen Sie, Ihre Berechtigungen zu überprüfen, und dass Sie tatsächlich PIP installiert haben. Wenn es immer noch nicht da ist, versuchen Sie es auf Stack Overflow (das wurde bereits diskutiert 10 Websites, die dem Anfänger-Programmierer mit Beispiel-Code-Snippets helfen können 10 Websites, die dem Anfänger-Programmierer mit Beispielcode-Snippets helfen können Lesen Sie mehr von unserem Internet-Redakteur, Saikat Basu ) oder MakeUseOf Antworten.
Nun, das ist sortiert, erstellen Sie ein neues Verzeichnis. Hier werden wir unseren gesamten Code platzieren. Öffnen Sie einen Texteditor und erstellen Sie eine Datei namens "shtest.py". Hier werden wir einfach eine neue Datei erstellen und dann den Inhalt des Verzeichnisses auflisten, in dem wir uns befinden. Klingt gut?
Fügen Sie in shtest.py die folgenden Zeilen hinzu.
#! / usr / bin / env Python-Import sh
sh.touch ('Hallo') drucken (sh.ls ('- l'))
Einfaches Zeug hier. Lass uns das brechen.
#! / usr / bin / env python
Diese Zeile heißt Hash-Bang und weist Ihre Shell an, diese Datei als Python-Programm zu öffnen. Dadurch können Sie es wie ein Shell-Skript (./shtest.py) öffnen, anstatt es direkt mit Python (python shtest.py) zu öffnen. Cool, oder?
importieren sh
Diese Zeile importiert die SH-Bibliothek, die wir vor einiger Zeit installiert haben. Wir können nicht ohne das weitermachen, also stellen Sie sicher, dass es in Ihrem Code ist!
sh.touch ('Hallo')
Vielleicht kennen Sie den Linux-Befehl 'touch'. Dies erstellt eine leere Datei mit dem von Ihnen angegebenen Dateinamen. Hier rufen wir in Python direkt 'touch' an. Wie Sie sehen können, haben wir dies mit "sh." Vorangestellt, und wir übergeben es einen Parameter von "Hallo".
drucken (sh.ls ('- l'))
Sie kennen vielleicht den Befehl 'print', der Text an die Konsole ausgibt. Hier übergeben wir es als Parameter "sh.ls". Dies ruft das Linux ls-Programm auf, das den Inhalt eines Verzeichnisses auflistet. Wir geben auch einen Parameter '-l' weiter, der detailliertere Informationen über den Inhalt des Verzeichnisses ausgibt, in dem wir dies ausführen.
Funktioniert es? Überzeugen Sie sich selbst.
Diejenigen unter euch, die Falkenaugen haben, werden bemerken, dass eine andere Datei in diesem Verzeichnis namens "gitsh.py" herumläuft. Was könnte da drin sein?
Unterbefehle
sh.py hat einige Hooks für populäre Programme, die bereits installiert sind. Dazu gehören git, sudo und eine beträchtliche Anzahl von Linux-Dienstprogrammen. Dies macht die Interaktion mit diesen Diensten aus Python noch einfacher.
Wie einfach? Nun, ich werde Ihnen zeigen, wie Sie ein leeres Git Repository in nur drei Zeilen Code initialisieren. Erstellen Sie zunächst eine Datei namens "gitsh.py" und öffnen Sie sie in Ihrem bevorzugten Texteditor.
Drinnen schreiben Sie die folgenden drei Zeilen.
#! / usr / bin / env python von sh import git print (git.init ())
Das meiste sollte dir ziemlich vertraut sein. Sie werden feststellen, dass wir "git" von "sh" importiert haben. Das bedeutet nur, dass wir eine bestimmte Funktionalität aus einem Modul importiert haben, während Sie alles andere ignorieren.
Danach initialisieren wir unser Repository.
drucken (git.init ())
Wir haben über Print gesprochen. Sie sollten bemerken, dass wir 'git' aufrufen, ohne dass '.sh' fortfährt. Dies liegt daran, dass wir die Git-Funktionalität speziell aus der 'sh'-Bibliothek importiert haben.
Und das ist es auch schon. Wenn wir gitsh.py ausführen, sollten die folgenden Zeilen in Ihrem Terminal erscheinen.
Fazit
Das war eine relativ einfache Einführung in sh.py. Wenn Sie mehr darüber erfahren möchten, sehen Sie sich die offizielle Dokumentation hier an. Wenn Sie jedoch nicht weiterkommen, können Sie mir gerne einen Kommentar hinterlassen und ich werde versuchen, Ihnen zu helfen.