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
alias
oder 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
command
der Name eines Befehls (z.B.cd
) oder Programms ist (wie z.B.python
oderls
).arg1
etc. 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 /c/ofi/ unzip adventurequest.zip python guide.py
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 -a
alle Dateien anzeigen (auch versteckte)ls -l
Zusätzliche Informationen anzeigen.ls -ltr
Dateien nach Datum (-t) in umgekehrter Reihenfolge (-r) anzeigen. So wird die neueste Datei zuunterst angezeigt.ls -lhSr
Dateien 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
cd
alleine) 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/jokerchain
wechselt zwei Verzeichnisse auf einmal.
mkdir (make directory)
mkdir
legt ein neues Verzeichnis an:
mkdir test
Legt im aktuellen Verzeichnis ein neues Verzeichnistest
an.mkdir -p alles/auf/einmal
Legt verschachtelte Verzeichnisse auf einmal an (anstattmkdir alles
,cd alles
,mkdir auf
,cd auf
,mkdir einaml
,cd ../..
)
rmdir (remove directory)
rmdir
löscht ein leeres Verzeichnis
rmdir test
Löscht das leere Verzeichnis test im aktuellen Verzeichnis. Schlägt fehl und tut nichts, wenn das Verzeichnis nicht leer ist.
pwd (print working directory)
Zeigt das aktuelle Verzeichnis an. Dieses wird normalerweise schon automatisch auf der Kommandozeile angezeigt.
python
python
started den interativen Python-Interpreterpython hello.py
startet das Pythonprogramm, dass in der Dateihello.py
im aktuellen Verzeichnis gespeichert ist.
cp (copy)
cp
kopiert Dateien.
cp orignal.txt kopie.txt
kopiert die Dateioriginal.txt
unter neuem Namenkopie.txt
.cp test.txt foo/bar/.
kopiert die Dateitest.txt
unter gleichem Namen in den Ordnerbar
, der sich im Ordnerfoo
befindet.cp *.md backup/.
kopiert alle Dateien, die mit.md
aufhören in den Ordnerbackup
.cp -r meinordner /c/backup/.
kopiert den Ordnermeinordner
rekursiv (d.h. mit allen Dateien und Ordnern, die darin sind) in den Ordner/c/backup
cp -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 Ordnerbackup
nicht 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 neu
benennt die Dateialt
inneu
um.mv datei ordner/.
verschiebt die Dateidatei
in den Ordnerordner
.mv jocker-chain2022*.md backup/.
verschiebt alle Dateien, die mitjocker-chain2022
beginnen und mit.md
aufhören in den Ordnerbackup
.mv ordner1 ordner2/.
verschiebt den Ordnerordner1
mitsam 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.
notepad (Text-Editor)
Normalerweise startet notepad
den Windows Text-Editor der aber sehr limitiert ist. Wir haben ein alias
definiert, damit mit diesem Befehl notepad++
gestartet wird.
Damit können auch gleich Dateien geöffnet werden, indem diese auf der Kommandozeile als Argumente angegeben werden. Z.B.
notepad .bashrc
öffnet die Datei .bashrc im aktuellen Ordner (und bietet an, diese anzulegen, falls sie nicht existiert)notepad *.txt
öffnet alle Dateien, deren Namen mit.txt
enden.
alias
Der Befehl alias
bietet sich an, um eigene Kommandos zusammenzustellen.
alias
Ohne Argumente werden alle definierten Aliases angezeigt.alias ofi='cd /c/ofi/'
Definiert den Befehlofi
als den Wechsel ins Verzeichnis/c/ofi
.
Fügen Sie das obige ofi
-Alias der Datei ~/.bashrc
hinzu mit folgendem Kommando:
notepad ~/.bashrc
- Speichern Sie die Datei und schliessen Sie notepad
- Mit
source ~/.bashrc
laden Sie die neue Datei. Das aliasofi
sollte jetzt definiert und einsatzbereit sein.
Adventure auf der bash Kommandozeile
- Speichern Sie folgende Archiv in
C:\ofi\
(mit Link speichern unter)adventurequest.zip. - Öffnen Sie git-bash und navigieren Sie in dieses Verzeichnis mit
cd /c/ofi
- Überprüfen mit dem Kommando
ls
, ob die zip-Datei auch dort liegt. - Entpacken Sie das zip-Archiv mit
unzip adventurequest.zip
- Überprüfen Sie wieder mit
ls
, ob auch ein neues Verzeichnis entstanden ist. - Wechseln Sie ins neue Verzeichnis mit
cd adventurequest
Tab Enter. - Starten Sie den Guide mit
python guide.py
Versuchen Sie die gestellten Aufgaben zu lösen. Schauen Sie sich ruhig um mit ls
, cd ordnername
und cd ..
um wieder zurück zu gelangen.
Hinweis: Die letzte Aufgabe (alle Bibliotheken ausrüsten) ist sehr anspruchsvoll.