Arbeiten mit dem Terminal
Mit dem Terminal kannst du auf Textbasis mit deinem Computer interagieren, indem du Befehle eingibst und dieser darauf reagiert.
Wenn wir über das Terminal reden, fallen da oft auch Begriffe wie command line, shell, terminal und bash. Kommandozeile und Terminal werden oft synonym verwendet, bezeichnen aber eigentlich leicht unterschiedliche Dinge. Die Kommandozeile ist die textbasierte Schnittstelle, in der du Befehle eingibst. Das Terminal ist die Anwendung, in der du mit der Kommandozeile interagierst. Es stellt das Fenster und die Umgebung bereit, in der du deine Befehle eingeben und die Ergebnisse sehen kannst.
Zusätzlich zum Terminal gibt es noch die Shell. Die Shell ist ein Programm, das deine Befehle interpretiert und ausführt. Es gibt verschiedene Shells, wie zum Beispiel die Bash (häufig unter macOS und Linux verwendet), die Zsh oder die PowerShell (unter Windows). Jede Shell hat ihre eigenen Befehle und Funktionen.
Bei macOS findest du das Terminal über die Suche (Spotlight) oder im Verzeichnis Programme/Dienstprogramme
. Bei Windows heißt das Terminal PowerShell, die du über die Suche und das Startmenü aufrufen kannst.
In beiden Fällen öffnet sich ein Fenster, das deine Befehle erwartet. Am Anfang steht immer ein sogenannter Command-Prompt, hier gekennzeichnet als $
:
$
Probiere es doch gleich einmal aus. Gebe bitte ohne das $
den Befehl echo hallo
ein und drücke ⏎ Enter (bzw. Return).
$ echo hallohallo
Das ist ein einfacher Befehl, der das Wort „hallo“ ausgibt. Das mag zunächst nicht sehr nützlich erscheinen, zeigt aber ein wichtiges Konzept. Im Terminal gibst du Befehle ein, wie echo
. Diese Befehle nehmen Argumente entgegen, wie hallo
.
Schauen wir uns nun an, was du noch alles mit dem Terminal machen kannst.
Grundlagen
Im Terminal arbeitest du immer in einem Verzeichnis bzw. einem „Ordner“. Um zu sehen, in welchem Verzeichnis du dich gerade befindest, gebe folgenden Befehl ein:
$ pwd/Users/starterguide
pwd
ist die Abkürzung für „print working directory“. Standardmäßig startet das Terminal immer in deinem Home-Verzeichnis, das nach deinem Anmeldenamen benannt ist. Das ist das gleiche Verzeichnis, das deinen Dokumente
-Ordner auf macOS, bzw. Benutzer
auf Windows enthält, also bist du damit wahrscheinlich vertraut.
Inhalte anzeigen
Um zu sehen, welche Dateien sich im aktuellen Arbeitsverzeichnis befinden, verwende den Befehl ls
:
$ lsApplicationsDesktopDocumentsDownloadsREADME.md
Neben Ordnern und Dateien kann ls
auch versteckte Dateien anzeigen, die mit einem Punkt beginnen. Das sind normalerweise Konfigurationsdateien, die du nicht sehen musst, aber manchmal nützlich sind. Um alle Dateien anzuzeigen, einschließlich der versteckten, verwende das -a
-Flag:
$ ls -a....Trash.bash_historyApplicationsDesktopDocumentsDownloadsREADME.md
Das -a
-Flag ist ein Beispiel für eine Option. Eine Option ist eine Art Schalter, den du einem Befehl übergibst. In diesem Fall zeigt -a
alle Dateien an, auch die versteckten.
Der folgende Befehl zeigt alle Dateien an, einschließlich der versteckten, und gibt zusätzliche Informationen zu jeder Datei aus:
$ ls -ladrwxr-x---+ 79 starterguide staff 2528 Dec 19 10:59 .drwxr-xr-x 5 root admin 160 Dec 18 20:27 ..-rw-r--r--@ 1 starterguide staff 6148 Dec 19 10:59 .DS_Store
Der einzelne Punkt .
steht für das aktuelle Verzeichnis und der doppelte Punkt ..
steht für das übergeordnete Verzeichnis.
Pfade verstehen
Um effektiv auf dem Terminal zu arbeiten, musst du Pfade verstehen. Ein Pfad ist eine Reihe von Verzeichnis-Namen, die durch /
getrennt sind und manchmal mit einem Dateinamen enden. Ein Verzeichnis ist nur ein anderer Name für einen „Ordner“. Lass uns zu pwd
zurückkehren:
$ pwd/Users/starterguide
Lass uns hier ein neues Verzeichnis namens Projects
erstellen und dann in dieses Verzeichnis wechseln:
$ mkdir Projects$ cd Projects
Das aktuelle Arbeitsverzeichnis ist jetzt /Users/starterguide/Projects
.
mkdir
ist die Abkürzung für „make directory“ und erstellt ein neues Verzeichnis. cd
ist die Abkürzung für „change directory“ und ändert dein aktuelles Arbeitsverzeichnis. Wenn du jetzt ls
eingibst, siehst du die Dateien deines Projects
-Verzeichnisses. Da du dort allerdings noch keine Dateien erstellt hast, wird die Ausgabe leer sein.
Lass uns hier ein weiteres Verzeichnis namens Website
erstellen und darin eine Datei namens README.md
:
$ mkdir Website$ cd Website$ touch README.md
Das ganze sieht dann so aus:
Directory/Users/starterguide/
DirectoryProjects/
DirectoryWebsite/
- README.md
Die vollständigen Pfade dazu wären:
/Users/starterguide/Projects/Users/starterguide/Projects/Website/Users/starterguide/Projects/Website/README.md
Relative Pfade
Du musst nicht immer den vollständigen Pfad zu einer Datei eingeben. Du kannst auf eine Datei verweisen, indem du ihren Pfad relativ zu deinem aktuellen Verzeichnist einngibst. Zum Beispiel sind diese beiden Pfade vom Home-Verzeichnis aus äquivalent:
/Users/starterguide/Projects/Website/README.mdProjects/Website/README.md
Der erste Pfad ist ein absoluter Pfad, was bedeutet, dass er am Root meines Laufwerks beginnt, wie durch das führende /
angegeben. Der zweite Pfad ist ein relativer Pfad, was bedeutet, dass er in deinem aktuellen Arbeitsverzeichnis beginnt, demselben Verzeichnis, das angezeigt wurde, als wir pwd
ausgeführt haben.
Home-Verzeichnis
Wie bereits erwähnt, befindet sich im Home-Verzeichnis all deine Dokumente und Dateien. Statt den absoluten Pfad zu deinem Home-Verzeichnis zu verwenden, kannst du auch die Tilde ~
verwenden, um dahin zu wechseln:
$ cd ~
Unter macOS erreichst du die Tilde mit ⌥ Option + N. Unter Windows befindet sich die Tilde zwischen dem Ü und der Return-Taste. Mit der Tastenkombination Alt Gr + + kannst du die Tilde eingeben.
Du kannst auch das ~
auch deinem Projects
-Verzeichnis voranstellen. Alle drei der folgenden Pfade sind äquivalent:
/Users/starterguide/Projects/Website/README.mdProjects/Website/README.md~/Projects/Website/README.md
Unabhängig davon, welches Verzeichnis dein aktuelles Arbeitsverzeichnis ist, kannst du zu deinem Verzeichnis wie folgt wechseln:
$ cd ~/Projects/Website
Pfade vereinfachen
Relative Pfade und die Tilde ~
sind die nicht einzigen Möglichkeiten, um Pfade für die Eingabe zu „konstruieren“. Du solltest auch .
und ..
kennenlernen.
Der einzelne Punkt .
bezieht sich immer auf das Verzeichnis, in dem du dich befindest, in unserem Beispiel ist das ~/Projects/Website
. Der ist dann wichtig, wenn du zum Beispiel Dateien und Verzeichnisse löschen möchtest, doch dazu später mehr.
Die zwei Punkte ..
beziehen sich immer auf das Verzeichnis, das dasjenige enthält, in dem du dich befindest, also das Verzeichnis über deinem aktuellen Arbeitsverzeichnis. Konkret bedeutet das, dass ..
in unserem Beispiel für ~/Projects
steht.
Du kannst mit den zwei Punkten ..
auch in das übergeordnete Verzeichnis wechseln. Um von ~/Projects/Website
zu ~/Projects
zu wechseln, kannst du folgendes eingeben:
$ cd ..
Oder du gehst zwei Verzeichnisse zurück und wechselst von dort aus in ein anderes Verzeichnis:
$ cd ../../Documents
Aktuellen Pfad kopieren
Wenn du mit cd
in ein bestimmtes Verzeichnis wechseln möchtest, musst du den Pfad kennen. So findest du ihn heraus:
-
Öffne den Finder und navigiere zu dem Verzeichnis, dassen Pfad du kopieren möchtest.
-
Drücke die ⌥ Option-Taste und klicke mit rechts auf das Verzeichnis.
-
Wähle „Als Pfadname kopieren“ aus dem Kontextmenü.
-
Wechsle zurück zum Terminal, gebe
cd
ein und füge den Pfad mit ⌘ Command + V ein.Terminal-Fenster $ cd /Pfad/zum/Verzeichnis
-
Öffne den Windows Explorer und navigiere zu dem Verzeichnis, dassen Pfad du kopieren möchtest.
-
Klicke in die Adressleiste, um den Pfad zu markieren.
-
Drücke Strg + C, um den Pfad zu kopieren.
-
Wechsle zurück zum Terminal, gebe
cd
ein und füge den Pfad mit Strg + V ein.Terminal-Fenster $ cd /Pfad/zum/Verzeichnis
Pfad in VS Code öffnen
Wenn du den aktuellen Pfad in Visual Studio Code öffnen möchtest, kannst du das auch direkt aus dem Terminal heraus tun. Gebe dazu einfach code
und den Pfad ein:
$ code .
Damit das funktioniert, musst du in VS Code zunächst die Shell Command installieren. Das geht über das Menü „Command Palette“ mit ⌘ Command + ⇧ Shift + P (macOS) oder Strg + ⇧ Shift + P (Windows) und der Suche nach „Shell Command: Install ‘code’ command in PATH“. Klicke auf den Eintrag oder bestätige mit ⏎ Enter. Danach kannst du code
im Terminal verwenden.
Autovervollständigung
Auch mit deiner Kentniss von ~
und ..
, wirst du immer noch viele Verzeichnisnamen eingeben müssen. Glücklicherweise unterstützt das Terminal die Autovervollständigung, sowohl für Befehle, als auch für Verzeichnisse. Um dies in Aktion zu sehen, gib dies ein, aber drücke nach dem zweiten Befehl nicht die Eingabetaste, sondern die Tabulatortaste ⇥ Tab, die im zweiten Befehl angegeben ist. (Gib nicht [TAB]
ein.)
$ cd ~/Proj[TAB]
Die Taste ⇥ Tab vervollständigt Proj
automatisch zu Projects/
. Von hier aus kannst du ein weiteres Mal die Tabulatortaste drücken und der Pfad wird zu Projects/Website/
vervollständigt.
Inhalte öffnen
Wenn du die Maus schon einmal beiseite gelegt hast und dich im Terminal befindest, möchtest du vielleicht von hier aus auch Dateien oder Verzeichnisse öffnen. Das geht mit dem Befehl open
unter macOS und explorer
unter Windows.
$ open .$ open README.md
Der Punkt .
steht für das aktuelle Verzeichnis und öffnet es im Finder, bzw. Explorer. Der Befehl open README.md
öffnet die Datei README.md
im Standardprogramm, das mit diesem Dateityp verknüpft ist.
Mit VS Code öffnen
Du kannst deine Dateien oder Verzeichnisse auch direkt über das Terminal in Visual Studio Code öffnen. Dazu musst du den Befehl code
verwenden:
$ code .$ code README.md
Damit das funktioniert, musst du in VS Code zunächst die Shell Command installieren. Das geht über das Menü „Command Palette“ mit ⌘ Command + ⇧ Shift + P (macOS) oder Strg + ⇧ Shift + P (Windows) und der Suche nach „Shell Command: Install ‘code’ command in PATH“. Klicke auf den Eintrag oder bestätige mit ⏎ Enter. Danach kannst du code
im Terminal verwenden.
Inhalte löschen
Du kannst Dateien und Verzeichnisse löschen, indem du den Befehl rm
verwendest — das steht für „remove“. Nehmen wir an, wir haben eine Datei namens test.txt
erstellt und wollen sie löschen.
Um auf Nummer sicher zu gehen, dass du auch nur die Datei löscht, die du löschen möchtest, stelle den Punkt .
voran. Dieser steht für das aktuelle Verzeichnis:
$ rm ./test.txt
Was ist denn, wenn wir mehrere Dateien auf einmal löschen möchten?
Nehmen wir an, wir haben drei Dateien: test1.txt
, test2.txt
und test3.txt
. Um diese drei Dateien zu löschen, können wir das *
-Symbol verwenden, das als Glob oder Wildcard bekannt ist. Das *
bedeutet „alles, was vorher und nachher passt“. Konkret löscht du alle drei Dateien so:
$ rm ./test*.text
Auch Verzeichnisse werden mit rm
gelöscht. Allerdings musst hier einen Paramter, ein sogenanntes „Flag“ verwenden:
$ rm -r ./test
Das -r
steht für „rekursiv“ und sagt rm
, dass es sowohl test
als auch alles darin löschen soll.
Zusammenfassend:
rm
ist ein Kommando.-r
ist ein Parameter bzw. ein Flag.test
ist einn Argument.
Flags kommen in der Regel, aber nicht immer, vor Argumenten.
Prozesse abbrechen
Stell dir vor, du hast gerade einen Prozess gestartet, den du abbrechen möchtest. Zum Beispiel liest du mit ls
ein Verzeichnis aus und das dauert dir zu lange. Oder du startest mit dem Starterkit den Webserver und möchtest diesen beenden. Oder du hast gerade angefangen, Dateien zu löschen und merkst, dass es die falschen sind.
Du kannst den Prozess abbrechen, indem du die ⌃ Control + C bei macOS bzw. Strg + C bei Windows gleichzeitig drückst. Das c
steht für „cancel“, also Abbruch.
Nützliche Tipps
Desto länger deine Befehle werden, desto nerviger wird es, diese Kommandos zu wiederholen. Zum Glück hilfst uns das Terminal, das zu vermeiden.
Drücke die Pfeiltaste nach oben ↑, um den zuletzt ausgeführten Befehl zu wiederholen. Drücke die Taste mehrmals, um durch die letzten Befehle zu blättern. Drücke ⏎ Enter, um den Befehl auszuführen.
Doch was ist, wenn der Befehl, den du suchst schon eine Weile her ist und du ewig blättern müsstest? Drücke in diesem Fall bei macOS die Tasten ⌘ Command + R bzw. bei Windows Strg + R gleichzeitig. Das gestattet dir die „Rückwärtssuche“. Gib einfach Zeichen ein, die in deinem ursprünglichen Befehl vorkamen, und das Terminal wird ihn finden. Wenn du mehrere Befehle mit ähnlichen Namen ausgeführt hast, musst du möglicherweise mehr Zeichen eingeben, um ihn eindeutig zu identifizieren. Sobald du den Befehl gefunden hast, den du möchtest, drücke ⏎ Enter, um ihn auszuführen, oder den Pfeil nach rechts, um ihn in die Befehlszeile zu setzen, aber nicht auszuführen.
Dieses Tuturial basiert auf dem Command Line Tutorial von onyxfish. Es wurde für die Zwecke dieses Guides angepasst und erweitert. Vielen Dank für die großartige Arbeit!