Einführung in die Shell


  • Eine Shell ist ein Programm, dessen Hauptzweck darin besteht, Befehle zu lesen und andere Programme auszuführen.
  • Diese Lektion verwendet Bash, die Standard-Shell in vielen Unix-Implementierungen.
  • Programme können in der Bash durch Eingabe von Befehlen an der Eingabeaufforderung ausgeführt werden.
  • Die Hauptvorteile der Shell sind ihr hohes Verhältnis von ausgeführten Aktionen zu Tasteneingaben, ihre Unterstützung bei der Automatisierung wiederkehrender Aufgaben und ihre Fähigkeit, auf vernetzte Rechner zuzugreifen.
  • Eine große Herausforderung bei der Verwendung der Shell kann darin bestehen, zu wissen, welche Befehle ausgeführt werden müssen und wie sie auszuführen sind.

Dateien und Verzeichnisse durchsuchen


  • Das Dateisystem ist für die Verwaltung von Informationen auf der Festplatte zuständig.
  • Informationen werden in Dateien gespeichert, die wiederum in Verzeichnissen (Ordnern) abgelegt sind.
  • Verzeichnisse können auch andere Verzeichnisse speichern, die dann einen Verzeichnisbaum bilden.
  • pwd gibt das aktuelle Arbeitsverzeichnis des Benutzers aus.
  • ls [path] gibt eine Auflistung einer bestimmten Datei oder eines bestimmten Verzeichnisses aus; ls allein listet das aktuelle Arbeitsverzeichnis auf.
  • cd [path] ändert das aktuelle Arbeitsverzeichnis.
  • Die meisten Befehle nehmen Optionen an, die mit einem einzelnen - beginnen.
  • Verzeichnisnamen in einem Pfad werden unter Unix mit / getrennt, unter Windows jedoch mit \.
  • / allein ist das Stammverzeichnis des gesamten Dateisystems.
  • Ein absoluter Pfad gibt einen Ort an, der von der Root des Dateisystems ausgeht.
  • Ein relativer Pfad gibt einen Ort an, der vom aktuellen Ort ausgeht.
  • . allein bedeutet ‘das aktuelle Verzeichnis’; .. bedeutet ‘das Verzeichnis über dem aktuellen’.

Arbeiten mit Dateien und Verzeichnissen


  • cp [old] [new] kopiert eine Datei.
  • mkdir [path] ein neues Verzeichnis erstellt.
  • mv [old] [new] verschiebt (benennt) eine Datei oder ein Verzeichnis um.
  • rm [path] entfernt (löscht) eine Datei.
  • * passt auf null oder mehr Zeichen in einem Dateinamen, also passt *.txt auf alle Dateien, die auf .txt enden.
  • ? passt auf jedes einzelne Zeichen in einem Dateinamen, also passt ?.txt auf a.txt, aber nicht auf any.txt.
  • Die Verwendung des Steuerschlüssels kann auf viele Arten beschrieben werden, einschließlich Ctrl-X, Control-X und ^X.
  • Die Shell hat keinen Mülleimer: Wenn etwas gelöscht ist, ist es wirklich weg.
  • Die meisten Dateinamen sind something.extension. Die Erweiterung ist nicht erforderlich und garantiert nichts, wird aber normalerweise verwendet, um die Art der Daten in der Datei anzugeben.
  • Abhängig von der Art Ihrer Arbeit benötigen Sie möglicherweise einen leistungsfähigeren Texteditor als Nano.

Pipes und Filter


  • wc zählt Zeilen, Wörter und Zeichen in ihren Eingaben.
  • cat zeigt den Inhalt ihrer Eingänge an.
  • sort sortiert ihre Eingaben.
  • head zeigt die ersten 10 Zeilen seiner Eingabe standardmäßig ohne zusätzliche Argumente an.
  • tail zeigt die letzten 10 Zeilen seiner Eingabe standardmäßig ohne zusätzliche Argumente an.
  • command > [file] leitet die Ausgabe eines Befehls in eine Datei um (und überschreibt dabei den vorhandenen Inhalt).
  • command >> [file] hängt die Ausgabe eines Befehls an eine Datei an.
  • [first] | [second] ist eine Pipeline: die Ausgabe des ersten Befehls wird als Eingabe für den zweiten verwendet.
  • Die beste Art, die Shell zu benutzen, ist, Pipes zu benutzen, um einfache Einzweckprogramme (Filter) zu kombinieren.

Schleifen


  • Eine for-Schleife wiederholt die Befehle einmal für jedes Ding in einer Liste.
  • Jede for-Schleife braucht eine Variable, die auf das Ding verweist, mit dem sie gerade arbeitet.
  • Verwenden Sie $name, um eine Variable zu expandieren (d.h. ihren Wert zu erhalten). auch ${name} kann verwendet werden.
  • Verwenden Sie keine Leerzeichen, Anführungszeichen oder Platzhalterzeichen wie ‘*’ oder ‘?’ in Dateinamen, da dies die Variablenexpansion erschwert.
  • Geben Sie den Dateien konsistente Namen, die leicht mit Wildcard-Mustern übereinstimmen, um die Auswahl für die Schleife zu vereinfachen.
  • Benutzen Sie die Pfeil-nach-oben-Taste, um durch die vorherigen Befehle zu blättern und sie zu bearbeiten und zu wiederholen.
  • Verwenden Sie Strg+R, um die zuvor eingegebenen Befehle zu durchsuchen.
  • Verwenden Sie history, um die letzten Befehle anzuzeigen, und ![number], um einen Befehl nach Nummer zu wiederholen.

Shell-Skripte


  • Speichern Sie Befehle in Dateien (normalerweise Shell-Skripte genannt) zur Wiederverwendung.
  • bash [filename] führt die in einer Datei gespeicherten Befehle aus.
  • $@ bezieht sich auf alle Kommandozeilenargumente eines Shell-Skripts.
  • $1, $2, etc. beziehen sich auf das erste Kommandozeilenargument, das zweite Kommandozeilenargument, etc.
  • Setzen Sie Variablen in Anführungszeichen, wenn die Werte Leerzeichen enthalten könnten.
  • Dem Benutzer die Entscheidung zu überlassen, welche Dateien verarbeitet werden sollen, ist flexibler und konsistenter mit eingebauten Unix-Befehlen.

Dinge finden


  • find findet Dateien mit bestimmten Eigenschaften, die den Mustern entsprechen.
  • grep wählt Zeilen in Dateien aus, die dem Muster entsprechen.
  • --help ist eine Option, die von vielen Bash-Befehlen und Programmen unterstützt wird, die aus der Bash heraus ausgeführt werden können, um weitere Informationen über die Verwendung dieser Befehle oder Programme anzuzeigen.
  • man [command] zeigt die Handbuchseite für einen bestimmten Befehl an.
  • $([command]) fügt die Ausgabe eines Befehls an dieser Stelle ein.