de.phhsnews.com


de.phhsnews.com / Der Anfängerleitfaden zu Shell Scripting: Die Grundlagen

Der Anfängerleitfaden zu Shell Scripting: Die Grundlagen


Der Begriff "Shell Scripting" wird in Linux-Foren oft erwähnt, aber vielen Anwendern ist er nicht bekannt. Wenn Sie diese einfache und leistungsfähige Programmiermethode erlernen, können Sie Zeit sparen, die Befehlszeile besser erlernen und langwierige Dateiverwaltungsaufgaben verbannen.

Was ist Shell-Skripting?

Wenn Sie ein Linux-Benutzer sind, spielen Sie mit dem Befehl Linie. Ob Sie es mögen oder nicht, es gibt nur einige Dinge, die viel einfacher über diese Schnittstelle erledigt werden als durch Zeigen und Klicken. Je mehr Sie die Befehlszeile verwenden und lernen, desto mehr sehen Sie ihr Potenzial. Nun, die Kommandozeile selbst ist ein Programm: die Shell. Die meisten Linux-Distributionen verwenden heute Bash, und das ist es, in das Sie wirklich Befehle eingeben.

Einige von Ihnen, die Windows vor der Verwendung von Linux benutzten, erinnern sich vielleicht an Batch-Dateien. Dies waren kleine Textdateien, die Sie mit auszuführenden Befehlen füllen konnten, und Windows würde sie nacheinander ausführen. Es war eine clevere und nette Methode, um einige Dinge zu erledigen, wie zum Beispiel Run Games in Ihrem Highschool-Computerraum, wenn Sie keine Systemordner öffnen oder Verknüpfungen erstellen konnten. Batch-Dateien in Windows sind, obwohl sie nützlich sind, eine billige Nachahmung von Shell-Skripten.

Shell-Skripte ermöglichen es uns, Befehle in Ketten zu programmieren und sie vom System als Skript-Ereignis auszuführen, genau wie Batch-Dateien. Sie ermöglichen auch wesentlich nützlichere Funktionen wie die Befehlsersetzung. Sie können einen Befehl wie das Datum aufrufen und dessen Ausgabe als Teil eines Dateibenennungsschemas verwenden. Sie können Sicherungen automatisieren, und bei jeder kopierten Datei kann das aktuelle Datum an das Ende des Namens angehängt werden. Skripte sind nicht nur Aufrufe von Befehlen. Sie sind Programme für sich. Scripting ermöglicht es Ihnen, Programmierfunktionen wie 'for' -Schleifen, if / then / else-Anweisungen usw. direkt in der Benutzeroberfläche Ihres Betriebssystems zu verwenden. Und Sie müssen keine andere Sprache lernen, weil Sie das verwenden, was Sie bereits kennen: die Befehlszeile.

Das ist wirklich die Macht des Skripts, denke ich. Sie können mit bereits bekannten Befehlen programmieren und dabei die wichtigsten Programmiersprachen lernen. Müssen Sie etwas Wiederholendes und Langweiliges tun? Schreib es! Brauchen Sie eine Abkürzung für einen wirklich komplizierten Befehl? Schreib es! Möchten Sie eine wirklich einfach zu verwendende Befehlszeilenschnittstelle für etwas erstellen? Schreib es!

Bevor du anfängst

Bevor wir mit unserer Skriptereihe beginnen, wollen wir ein paar grundlegende Informationen behandeln. Wir werden die Bash-Shell verwenden, die die meisten Linux-Distributionen nativ verwenden. Bash ist für Mac OS Benutzer und Cygwin auch für Windows verfügbar. Da es so universell ist, sollten Sie unabhängig von Ihrer Plattform skripten können. Solange alle Befehle, auf die verwiesen wird, existieren, können Skripte auf mehreren Plattformen arbeiten, ohne dass eine Feinabstimmung erforderlich ist.

Scripting kann leicht die Privilegien "Administrator" oder "Superuser" nutzen, also ist es das Beste Testen Sie Skripts, bevor Sie sie zum Laufen bringen. Verwenden Sie auch den gesunden Menschenverstand, z. B. um Sicherungskopien der Dateien zu erstellen, auf denen Sie ein Skript ausführen möchten. Es ist auch sehr wichtig, die richtigen Optionen wie -i für den Befehl rm zu verwenden, damit Ihre Interaktion erforderlich ist. Dies kann einige böse Fehler verhindern. Lesen Sie daher Skripts, die Sie herunterladen, sorgfältig durch und seien Sie vorsichtig mit den Daten, die Sie haben, nur für den Fall, dass etwas schief geht.

Scripts sind im Grunde reine Textdateien. Sie können jeden Texteditor verwenden, um sie zu schreiben: gedit, emacs, vim, nano ... Diese Liste geht weiter. Stellen Sie sicher, dass Sie es als Nur-Text, nicht als Rich-Text oder als Word-Dokument speichern. Da ich die Benutzerfreundlichkeit von nano sehr schätze, benutze ich das.

Skriptberechtigungen und -namen

Skripte werden wie Programme ausgeführt, und damit dies geschieht, müssen sie die entsprechenden Berechtigungen haben. Sie können Skripte ausführbar machen, indem Sie den folgenden Befehl ausführen:

chmod + x ~ / somecrazyfolder / script1

Dies ermöglicht es jedem, dieses spezielle Skript auszuführen. Wenn Sie die Verwendung auf Ihren Benutzer beschränken möchten, können Sie stattdessen Folgendes verwenden:

chmod u + x ~ / somecrazyfolder / script1

Um dieses Skript auszuführen, müssten Sie in das richtige Verzeichnis wechseln und dann das Skript wie folgt ausführen:

cd ~ / somecrazyfolder

./ script1

Um die Dinge bequemer zu machen, können Sie Skripte in einem Ordner "bin" in Ihrem Home-Verzeichnis platzieren:

~ / bin

In vielen modernen Distributionen wird dieser Ordner nicht mehr standardmäßig erstellt, aber Sie können erstellen es. In der Regel werden ausführbare Dateien gespeichert, die zu Ihrem Benutzer und nicht zu anderen Benutzern gehören. Wenn Sie hier Skripte platzieren, können Sie sie einfach ausführen, indem Sie wie bei anderen Befehlen ihren Namen eingeben, anstatt herumzuspielen und das Präfix "./" zu verwenden.

Bevor Sie jedoch ein Skript benennen, sollten Sie Folgendes tun Befehl, um zu überprüfen, ob Sie ein Programm installiert haben, das diesen Namen verwendet:

welcher [Befehl]

Viele Leute nennen ihre frühen Skripts "test", und wenn sie versuchen, es in der Befehlszeile auszuführen, nichts das passiert. Dies liegt daran, dass es mit dem Testbefehl kollidiert, der ohne Argumente nichts tut. Stellen Sie immer sicher, dass Ihre Skriptnamen nicht in Konflikt mit Befehlen stehen, sonst werden Sie möglicherweise Dinge tun, die Sie nicht beabsichtigen!

Scripting Guidelines

Wie ich bereits erwähnt habe, ist jede Skriptdatei im Wesentlichen reiner Text. Das bedeutet nicht, dass Sie schreiben können, was Sie wollen, aber alles willy-nilly, obwohl. Wenn versucht wird, eine Textdatei auszuführen, durchforsten Shells diese nach Hinweisen, ob es sich um Skripte handelt oder nicht, und um alles richtig zu handhaben. Aus diesem Grund gibt es ein paar Richtlinien, die Sie wissen müssen.

  1. Jedes Skript sollte mit "#! / Bin / bash"
  2. sein. Jede neue Zeile ist ein neuer Befehl
  3. Kommentarzeilen beginnen mit einem #
  4. Befehle sind umgeben von ()

Der Hash-Bang-Hack

Wenn eine Shell eine Textdatei analysiert, ist der direkteste Weg, die Datei als Skript zu identifizieren, die erste Zeile:

# ! / bin / bash

Wenn Sie eine andere Shell verwenden, ersetzen Sie hier ihren Pfad. Kommentarzeilen beginnen mit Hashes (#), fügen aber den Bang (!) Und den Shell-Pfad nach einer Art Hack hinzu, der diese Kommentarregel umgeht und die Ausführung des Skripts mit der Shell, auf die diese Zeile zeigt, erzwingt

Neue Zeile = Neuer Befehl

Jede neue Zeile sollte als neuer Befehl oder als Komponente eines größeren Systems betrachtet werden. Wenn / then / else-Anweisungen beispielsweise mehrere Zeilen übernehmen, befindet sich jedoch jede Komponente dieses Systems in einer neuen Zeile. Lassen Sie einen Befehl nicht in die nächste Zeile bluten, da dies den vorherigen Befehl abschneiden und Ihnen in der nächsten Zeile einen Fehler geben kann. Wenn Ihr Texteditor das tut, sollten Sie den Textumbruch deaktivieren, um auf der sicheren Seite zu sein. Sie können den Textumbruch im Nano-Bit mit ALT + L abschalten.

Kommentar Oft mit #s

Wenn Sie eine Zeile mit einem # beginnen, wird die Zeile ignoriert. Dies verwandelt es in eine Kommentarzeile, in der Sie sich selbst daran erinnern können, was die Ausgabe des vorherigen Befehls war oder was der nächste Befehl tun wird. Deaktivieren Sie den Zeilenumbruch oder brechen Sie den Kommentar in mehrere Zeilen auf, die alle mit einem Hash beginnen. Es ist eine gute Übung, viele Kommentare zu verwenden, da Sie und andere Ihre Skripte einfacher anpassen können. Die einzige Ausnahme ist der oben erwähnte Hash-Bang-Hack, also folge nicht #s mit! S. ; -)

Befehle werden von Klammern umgeben

In früheren Tagen wurden Befehlssubstitutionen mit einzelnen Teilstrichen ausgeführt (', teilt die Taste ~). Wir werden das noch nicht anfassen, aber da die meisten Leute nach dem Erlernen der Grundlagen loslegen und es erforschen, ist es wahrscheinlich eine gute Idee zu erwähnen, dass Sie stattdessen Klammern verwenden sollten. Dies liegt vor allem daran, dass beim Einfügen von Befehlen in andere Befehle die Klammern besser funktionieren.

Ihr erstes Skript

Beginnen wir mit einem einfachen Skript, mit dem Sie Dateien kopieren und Daten an das Ende des Dateinamens anfügen können. Nennen wir es "datecp". Zuerst überprüfen wir, ob dieser Name mit etwas in Konflikt steht:

Sie können sehen, dass es keine Ausgabe des entsprechenden Befehls gibt, daher können wir diesen Namen verwenden.

Erstellen wir eine leere Datei in ~ / bin-Ordner:

Berühren Sie ~ / bin / datecp

Und jetzt ändern wir die Berechtigung, bevor wir vergessen:

Beginnen wir mit dem Erstellen unseres Skripts. Öffnen Sie diese Datei in Ihrem bevorzugten Texteditor. Wie ich schon sagte, mag ich die Einfachheit von nano.

nano ~ / bin / datecp

Und, gehen wir voran und fügen Sie die vorausgesetzte erste Zeile ein und einen Kommentar darüber, was dieses Skript macht.

Lassen Sie uns eine Variable deklarieren. Wenn Sie jemals Algebra genommen haben, wissen Sie wahrscheinlich, was das ist. Eine Variable erlaubt uns, Informationen zu speichern und Dinge damit zu tun. Variablen können "erweitert" werden, wenn sie an anderer Stelle referenziert werden. Das heißt, anstatt ihren Namen anzuzeigen, werden sie ihre gespeicherten Inhalte anzeigen. Sie können später dieselbe Variable angeben, um andere Informationen zu speichern, und alle Anweisungen, die danach ausgeführt werden, verwenden die neuen Informationen. Es ist ein wirklich schicker Platzhalter.

Was werden wir aus Variable herausholen? Nun, lass uns Datum und Uhrzeit speichern! Dazu rufen wir den Befehl date auf.

Sehen Sie sich den folgenden Screenshot an, um die Ausgabe des Datumsbefehls zu erstellen:

Sie können dies sehen, indem Sie verschiedene Variablen hinzufügen, die mit% beginnen, Sie können die Ausgabe des Befehls so ändern, wie Sie möchten. Weitere Informationen finden Sie auf der Handbuchseite für den Befehl date.

Lassen Sie uns die letzte Iteration des Datumsbefehls verwenden: "Datum +% m_% d_% y-% H.% M.% S" und benutze das in unserem Skript.

Wenn wir dieses Skript jetzt speichern würden, könnten wir es ausführen und es würde uns die Ausgabe des Datumsbefehls geben, wie wir es erwarten würden:

Aber machen wir etwas anderes. Lassen Sie uns einen Variablennamen geben, wie date_formated für diesen Befehl. Die richtige Syntax dafür lautet wie folgt:

Variable = $ (Befehl-Optionen Argumente)

Und für uns würden wir es wie folgt bauen:

date_formatted = $ (Datum +% m_% d_% y-% H.% M.% S)

Dies nennen wir Befehlssubstitution. Wir sagen im Wesentlichen bash, dass, wenn die Variable "date_formatted" auftaucht, der Befehl innerhalb der Klammern ausgeführt wird. Dann sollte die Ausgabe, die die Befehle geben, anstelle des Namens der Variablen "date_formatted" angezeigt werden.

Hier ist ein Beispielskript und seine Ausgabe:

Beachten Sie, dass in der Ausgabe zwei Leerzeichen enthalten sind. Der Raum innerhalb der Anführungszeichen des Befehls echo und das Leerzeichen vor der Variablen werden angezeigt. Verwenden Sie keine Leerzeichen, wenn Sie nicht angezeigt werden sollen. Beachten Sie auch, dass ohne diese hinzugefügte "echo" -Zeile das Skript absolut keine Ausgabe geben würde.

Kommen wir zurück zu unserem Skript. Als nächstes fügen wir den kopierenden Teil des Befehls hinzu.

cp -iv $ 1 $ 2. $ date_formatted

Dadurch wird der Kopierbefehl mit den Optionen -i und -v aufgerufen. Erstere fragt Sie nach einer Bestätigung, bevor Sie eine Datei überschreiben, und letztere zeigt an, was in der Befehlszeile nicht angezeigt wird.

Als Nächstes können Sie sehen, dass ich die Option "$ 1" hinzugefügt habe. Beim Scripting bezeichnet ein Dollarzeichen ($) gefolgt von einer Zahl das nummerierte Argument des Skripts, wenn es aufgerufen wurde. Zum Beispiel im folgenden Befehl:

cp -iv Trogdor2.mp3 Klingelton.mp3

Das erste Argument ist "Trogdor2.mp3" und das zweite Argument ist "ringtone.mp3".

Rückblick auf unsere In diesem Skript können wir sehen, dass wir auf zwei Argumente verweisen:

Das bedeutet, dass wir beim Ausführen des Skripts zwei Argumente angeben müssen, damit das Skript ordnungsgemäß ausgeführt werden kann. Das erste Argument, $ 1, ist die Datei, die kopiert wird und als erstes Argument des "cp -iv" -Befehls verwendet wird.

Das zweite Argument, $ 2, dient als Ausgabedatei für denselben Befehl. Aber Sie können auch sehen, dass es anders ist. Wir haben einen Punkt hinzugefügt und auf die Variable "date_formatted" von oben verwiesen. Was passiert, wenn das Skript ausgeführt wird?

Sie können sehen, dass die Ausgabedatei so aufgeführt wird, wie ich sie für $ 2 eingegeben habe, gefolgt von einem Punkt und der Ausgabe des Datumsbefehls ! Macht Sinn, richtig?

Wenn ich jetzt den Befehl datecp ausführe, wird dieses Skript ausgeführt und ich kann jede Datei an einen neuen Speicherort kopieren und automatisch das Datum und die Uhrzeit am Ende des Dateinamens hinzufügen. Nützlich zum Archivieren!

Shell-Skripting ist das Herzstück, um Ihr Betriebssystem für Sie arbeiten zu lassen. Sie müssen auch keine neue Programmiersprache lernen, um dies zu ermöglichen. Versuche zu Hause mit einigen grundlegenden Befehlen zu scripten und überlege dir, wofür du das verwenden kannst.


Schreibst du? Haben Sie einen Rat für Neulinge? Teile deine Gedanken in den Kommentaren! In dieser Serie wird noch mehr folgen!


Wie Sie Ihren Windows Gaming PC automatisch in den Big Picture-Modus booten können (wie bei einer Steam Machine)

Wie Sie Ihren Windows Gaming PC automatisch in den Big Picture-Modus booten können (wie bei einer Steam Machine)

Steam Machines mit Valve Steam OS starten automatisch den Steam Big Picture-Modus Controller, um Spiele zu starten und alles andere zu tun. Wenn Sie einen Windows-Gaming-PC an Ihren Fernseher angeschlossen haben, können Sie ihn auch direkt in den Big Picture Mode booten. Sie können dies wahrscheinlich mit einem Windows-Gaming-PC tun, der an Ihren Fernseher angeschlossen ist an und verwenden Sie Ihren Controller ohne Tastatur oder Maus.

(how-to)

So übertragen Sie Ihre Dateien und Einstellungen schnell auf einen neuen PC (oder Mac)

So übertragen Sie Ihre Dateien und Einstellungen schnell auf einen neuen PC (oder Mac)

Das Migrieren von Dateien, Einstellungen und Programmen auf einen neuen PC kann ein wenig einschüchternd sein, vor allem, wenn Sie nicht komplett organisiert. Diese Tools und einfachen Tipps erleichtern Ihnen den Einstieg. Dieser Vorgang ist einfach, wenn Sie bereits regelmäßige Backups erstellen. Wenn alles über Ihren alten PC verstreut ist, könnten Sie es verlieren, wenn Ihre Festplatte stirbt oder Sie andere Computerprobleme haben.

(how-to)