====== Kommandozeile für Fortgeschrittene ====== Hier werden weitere Standard-Kommandos aus der Unix-Welt vorgestellt. Diese sind mit der git-bash automatisch mitinstalliert. ===== cat (Ausgabe einer Datei) ===== ''cat'' kommt von «concatenate», was wörtlich mit "zusammenketten" übersetzt werden kann. Damit kann der Inhalt einer Datei auf der Kommandozeile ausgegeben werden. Z.B. gibt folgendes Kommando die Konfigurationsdatei Ihrer bash aus (die Tilda ''~'' steht dabei für Ihr Home-Verzeichnis) cat ~/.bashrc ===== echo ===== ''echo'' gibt etwas auf der Kommandozeile aus. Z.B. echo Sag mal was ===== '>' Umlenkung der Ausgabe in eine Datei===== Die Ausgabe, die ein Programm produziert, kann in eine Datei umgeleitet werden. Achtung: Im folgenden Beispiel werden die Dateien ''ausgabe.txt'' und ''hello.txt'' überschrieben und am Schluss gelöscht! ls ls > ausgabe.txt ls cat ausgabe.txt echo hello world > hello.txt cat hello.txt ls rm ausgabe.txt hello.txt ls Das ''>'' Zeichen leitet die Ausgabe in eine Datei um. Diese wird dabei überschrieben falls die Datei schon existiert. Andernfalls wird die Datei erstellt. Das ist manchmal praktisch, um ganz kleine Dateien zu schreiben, ohne gleich einen Text-Editor zu öffnen. Sonst können Sie einfach mit notepad hello.txt die entsprechende Datei bearbeiten bzw. anlegen (speichern nicht vergessen!) ===== '|' Umlenkung der Ausgabe in ein nächstes Programm ===== Beispiel: yes | python guide.py Das Programm ''yes'' gibt fortlaufend den Text «yes» aus, bzw. jenen, der danach angegeben wird. Das Python Programm liest dies ein, als ob man dies auf der Tastatur eingegeben hätte. Es werden also automatisch alle Hilfen angezeigt ;-) ===== seq (Sequenz erzeugen) ===== Beispiel: seq 1 12 seq 1 3 30 seq 21 -7 0 Das erste Kommando ''seq 1 3 30'' produziert eine Folge von Zeilen mit den Zahlen 1,4,7, etc. ==== sort (Zeilen sortieren) ==== sort sortiert alle Zeilen. Entweder jene von der Eingabe oder aus der Datei (oder den Dateien) die angegeben wurde(n). Beispiele: seq 12 -2 4 seq 12 -2 4 | sort seq 12 -2 4 | sort -n seq 12 -2 4 > test.txt sort test.txt sort -n test.txt ''sort'' sortiert die produzierten Zeilen **alphabetisch**, was nicht unbedingt das Gewünschte ist. Soll **n**ummerisch sortiert werden, fügt man die Option ''-n'' an. ''sort'' sortiert entweder die Eingabe (typischerweise die Ausgabe eines anderen Programms) oder die angegebene Datei ===== wc (word count) Zeilen, Wörter, Bytes zählen ===== ''wc'' zählt die Anzahl Zeilen, Wörter und Bytes (entspricht ohne Sonderzeichen in etwa der Anzahl Buchstaben). Die Ausgabe von ''ls'' ist zeiltenweise, wenn ein nächstes Kommando angehängt wird. Wird ''cat'' angehängt, wird einfach die Eingabe (also was ''ls'' produziert) ausgegeben: ls | cat ls | wc ls *.txt | wc Die letzte Zeile zählt die Anzahl Dateien, die mit ''.txt'' enden. ===== grep (Zeilen filtern) ===== ''grep'' gibt jene Zeilen aus, in denen eine gegebene Zeichenkette (z.B. ein Wort oder Zahl) vorkommt. Diese Zeilen kommen entweder als Input daher, oder es werden die angegebenen Dateien durchsucht. Beispiel: Wie viele Zahlen von 1 bis 100 enthalten die Ziffer 2? seq 1 100 | grep 2 seq 1 100 | grep 2 | wc Mit der Option ''-R'' werden alle Dateien und Unterverzeichnisse nach dem Muster durchsucht. grep -R muster Nur zur Info: Das grep Kommando hätte noch viele weitere [[https://man7.org/linux/man-pages/man1/grep.1.html|weitere Optionen]], womit komplexere Muster gesucht oder ausgeschlossen werden können und die Ausgabe gesteuert (z.B. wie viele Zeilen davor und/oder danach) oder nur Ausgabe der Dateinamen etc. ===== find (Dateien finden) ===== ''find'' listet alle Dateien auf, die sich im gegebenen Verzeichnis und Unterverzeichnissen befinden. Dabei steht der Punkt ''.'' für das aktuelle Verzeichnis. find . Mit ''-name'' werden nur Dateien gelistet, die dem Suchmuster entsprechen. Achtung, das Suchmuster muss zwischen Anführungszeichen stehen (sonst wird das Suchmuster schon vor der Suche ersetzt). find . -name '*.txt' Auch find ist ein sehr mächtiges Tool, wo auch nach anderen Dateiattributen gefiltert werden und sogar für jede gefundene Datei ein Kommando ausgeführt werden kann. [[https://man7.org/linux/man-pages/man1/find.1.html|Zur Dokumentation]]. ===== unzip (zip-Datei entpacken) ===== unzip name_einer_zip_datei_die_es_auch_gibt.zip Entpackt die Datei ins aktuelle Verzeichnis. ====== Passwordhunt Adventure ====== * Speichern Sie folgendes Archiv ins Verzeichnis ''C:\ofi'' (Rechtsklick, Link speichern als): {{lehrkraefte:blc:informatik:glf22:passwordhunt.zip}}. * Entpacken Sie das Archiv direkt auf der Kommandozeile mit ''unzip passwordhunt.zip'' (Voraussetzung ist, dass Sie sich im richtigen Verzeichnis befinden). * Überprüfen Sie wieder mit ''ls'', ob auch ein neues Verzeichnis entstanden ist. * Wechseln Sie ins neue Verzeichnis mit ''cd passwordhunt'' Tab Enter. * Starten Sie den Guide mit ''python guide.py'' * Viel Spass!