Kommandozeile (bash)
Auf der Kommandozeile (auch Terminal oder Konsole genannt), können Programme gestartet, im Dateisystem navigiert, Dateien manipuliert werden (kopieren, umbenennen, verschieben) und eigentlich alles gemacht werden, was auf einem Computer gemacht werden kann.
Das mag auf den ersten Blick kompliziert erscheinen, hat aber auch verschiedene Vorteile:
- Mit der Tabulator-Taste können Dateinamen vervollständigt werden.
- Kommandos können einfach wiederholt werden (z.B. mit Pfeiltaste nach oben, durch Definition mit
aliasoder man speichert die Kommandozeile gleich in eine Datei). - Es kann mit vielen Dateien auf einmal gearbeitet werden, z.B. durch Verwendung von Wildcards wie
*,?, etc. - Nachhaltiges Lernen:
bash(die Kommandozeile, die wir einsetzen) und die gängigsten Kommandos haben sich in den letzten 30 Jahren kaum verändert und werden es auch in Zukunft nicht tun. - Sieht aus wie im Hacker-Film
Grundlegende Struktur eines Kommandos
Die Struktur ist folgende:
command arg1 arg2 arg3 …
wobei
commandder Name eines Befehls (z.B.cd) oder Programms ist (wie z.B.pythonoderls).arg1etc. die Argumente sind. Je nach Befehl können unterschiedlich viele (oder auch keine) Argumente angegeben werden.- Typischerweise sind Argumente Datei- oder Ordnernamen oder zusätzliche Optionen
- Der Befehl, bzw. Programm werden im aktuellen Verzeichnis (working directory) ausgeführt. Alle Datei- und Verzeichnisangaben, die nicht mit
/beginnen, beziehen sich auf das aktuelle Verzeichnis.
Beispiele:
cd jokerchain python jokerchain.py -d 2042-03-14
Kommandozeilenargumente werden durch Leerschläge getrennt. Das ist ein Problem, wenn Dateinamen Leerschläge enthalten. Diese müssen dann entweder durch Backslashes geschützt oder der ganze Dateinamen zwischen Anführungszeichen (doppelte oder einfache) geschrieben werden. Z.B.
cd "OneDrive - xyz Blabla" cd OneDrive\ -\ xyz\ Blabla
Die Tabulatortaste kann zur Ergänzung benutzt werden, wandelt dabei aber immer in die zweite Version mit Backslashes um
Auswahl einiger Befehle und Programme
ls (list files)
ls zeigt die Dateien im aktuellen Verzeichnis an. Nützliche Optionen:
ls -aalle Dateien anzeigen (auch versteckte)ls -lZusätzliche Informationen anzeigen.ls -ltrDateien nach Datum (-t) in umgekehrter Reihenfolge (-r) anzeigen. So wird die neueste Datei zuunterst angezeigt.ls -lhSrDateien nach Grösse (-S) in umgekehrter Reihenfolgen (-r) in «human readable format» (-h) anzeigen. Damit erscheinen die grössten Dateien zuunterst (praktisch zum Aufräumen).
cd (change directory)
cd wechselt das aktuelle Verzeichnis.
- Ohne Argument (einfach
cdalleine) wechselt ins Home-Verzeichnis, unter Windows typischerweise/c/Users/benutzername/, unter Linux/MacOS/home/benutzername. cd ..wechselt ins Elternverzeichnis (eine Ebene zurück).cd informatik/jokerchainwechselt zwei Verzeichnisse auf einmal.
pwd (print working directory)
Zeigt das aktuelle Verzeichnis an. Dieses wird normalerweise schon automatisch auf der Kommandozeile angezeigt.
python
pythonstarted den interativen Python-Interpreterpython hello.pystartet das Pythonprogramm, dass in der Dateihello.pyim aktuellen Verzeichnis gespeichert ist.
cp (copy)
cp kopiert Dateien.
cp orignal.txt kopie.txtkopiert die Dateioriginal.txtunter neuem Namenkopie.txt.cp test.txt foo/bar/.kopiert die Dateitest.txtunter gleichem Namen in den Ordnerbar, der sich im Ordnerfoobefindet.cp *.md backup/.kopiert alle Dateien, die mit.mdaufhören in den Ordnerbackup.cp -r meinordner /c/backup/.kopiert den Ordnermeinordnerrekursiv (d.h. mit allen Dateien und Ordnern, die darin sind) in den Ordner/c/backupcp -vrau meinordner /c/backup/.zeigt den Vorgang an (-v für verbose), (-r) rekursiv, (-a) archiv (d.h. die Zieldatei erhält die gleichen Attribute, wie die Quelldatei. Insbesondere werden die Datumsangaben übernommen), -u für update, d.h. nur neuere bzw. im Ordnerbackupnicht existierende Dateien werden kopiert. Das eignet sich sehr gut für wiederholte schnelle Backups.
mv (move)
mv verschiebt Dateien (bzw. benennt diese um).
mv alt neubenennt die Dateialtinneuum.mv datei ordner/.verschiebt die Dateidateiin den Ordnerordner.mv jocker-chain2022*.md backup/.verschiebt alle Dateien, die mitjocker-chain2022beginnen und mit.mdaufhören in den Ordnerbackup.mv ordner1 ordner2/.verschiebt den Ordnerordner1mitsam allem Inhalt in den Ordnerordner2.
rm (remove)
rm löscht Dateien. Mit Vorsicht zu gebrauchen. Die Dateien werden dabei nicht in den Papierkorb verschoben, d.h. die Löschung ist unwiderruflich.
code (Visual Studio Code)
code startet Visual Studio Code, zum Editieren von Text-Dateien und speziell zum Programmieren.
code .öffnet das aktuelle Verzeichnis (.) zum Bearbeiten der Dateien.code hello.pyöffnet die Dateihello.pyzum Editieren. Falls die Datei nicht existiert, wird sie dann unter diesem Namen gespeichert.
alias
Um Tipp-Arbeit zu sparen, können Sie das cd-Kommando zum Wechseln ins Informatik-Verzeichnis auch abspeichern. Gehen Sie dafür wie folgt vor:
- Gehen mit
cdins gewünschte Verzeichnis. - Geben Sie
pwdein und kopieren Sie den gesamten (absoluten) Pfad. - Starten Sie
code ~/.bashrcum die Konfig-Datei in Ihrem Home-Verzeichnis zu editieren. - Fügen Sie dort folgende Zeile (inklusive einfachen und doppelten Anführungszeichen) mit dem oben kopierten Pfad ein:
alias cdinfo='cd "hier die komplette Pfadangabe von oben einfügen"'
- Speichern Sie die Datei.
- Starten Sie die git-bash neu.
- Testen Sie das neue Kommando
cdinfo
Adventure auf der bash Kommandozeile
Laden Sie folgendes Archiv herunter und entpacken sie dieses adventurequest.zip. Achtung, es reicht nicht, sich den Inhalt des Archivs im Dateimanager anzusehen.
Öffnen Sie dann die git-bash und navigieren Sie mit 'cd' in den Ordner adventurequest. Starten Sie dort das Python-Script guide.py wie folgt:
python guide.py
und versuchen Sie die gestellte Aufgaben zu lösen. Schauen Sie sich ruhig um mit ls, cd ordnername und cd .. um wieder zurück zu gelangen.