| Both sides previous revision Previous revision Next revision | Previous revision |
| lehrkraefte:blc:informatik:glf4-24:bash-kommandos [2024/02/14 13:39] – [Wildcards] Ivo Blöchliger | lehrkraefte:blc:informatik:glf4-24:bash-kommandos [2024/02/14 14:22] (current) – [Wildcards] Ivo Blöchliger |
|---|
| | ====== Wichtige und praktische Kommandos ====== |
| | ===== 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 Verzeichnis ''test'' an. |
| | * ''mkdir -p alles/auf/einmal'' Legt verschachtelte Verzeichnisse auf einmal an (anstatt ''mkdir 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. |
| | |
| | ===== cp (copy) ===== |
| | ''cp'' kopiert Dateien. |
| | * ''cp orignal.txt kopie.txt'' kopiert die Datei ''original.txt'' unter neuem Namen ''kopie.txt''. |
| | * ''cp test.txt foo/bar/.'' kopiert die Datei ''test.txt'' unter gleichem Namen in den Ordner ''bar'', der sich im Ordner ''foo'' befindet. |
| | * ''cp *.md backup/.'' kopiert alle Dateien, die mit ''.md'' aufhören in den Ordner ''backup''. |
| | * ''cp -r meinordner /c/backup/.'' kopiert den Ordner ''meinordner'' 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 Ordner ''backup'' 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 Datei ''alt'' in ''neu'' um. |
| | * ''mv datei ordner/.'' verschiebt die Datei ''datei'' in den Ordner ''ordner''. |
| | * ''mv jocker-chain2022*.md backup/.'' verschiebt alle Dateien, die mit ''jocker-chain2022'' beginnen und mit ''.md'' aufhören in den Ordner ''backup''. |
| | * ''mv ordner1 ordner2/.'' verschiebt den Ordner ''ordner1'' mitsam allem Inhalt in den Ordner ''ordner2''. |
| | |
| | ===== 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. |
| | |
| | ===== Wildcards ===== |
| | Wo immer ein oder mehrere Dateinamen angegeben werden können, können diese mit einem Muster beschrieben werden. |
| | |
| | Dabei stehen |
| | * ''*'' für beliebige, beliebig viele Zeichen (auch keines). Typische Beispiele: |
| | * ''*.txt'' Alle Dateien, die die Endung ''.txt'' haben. |
| | * ''IMG_3*.jpg'' Alle Dateien, die mit ''IMG_3'' beginnen und mit ''.jpg'' enden. Z.B. ''IMG_3.jpg'', ''IMG_3210.jpg'' |
| | * ''?'' für genau ein belibiges Zeichen. Typische Beispiele: |
| | * ''hallo0?.txt'' passt z.B. auf ''hallo00.txt'', ''hallo0z.txt'' aber nicht auf ''hallo007.txt'' oder ''hallo0.txt'' |
| | * ''[a-z]'' steht für genau ein Kleinbuchstabe a-z. ''[3-6]'' steht für genau eine Ziffer 3 bis und mit 6. |
| | * ''{jpg,png,gif}'' steht für genau eines der aufgeführten Wörter. Typishces Beispiel: |
| | * ''*.{jpg,jpeg,png,gif}'' Alle Dateien die mit eine der aufgeführten Endungen haben. |
| | |
| | |
| | <WRAP todo> |
| | * Laden Sie folgendes zip-Archiv herunter {{lehrkraefte:blc:informatik:glf4-24:wildcards.zip}} und speichern Sie es in ''C:\ofi''. |
| | * Navigieren Sie mit dem ''cd'' Kommando dorthin und überprüfen Sie mit dem ''ls'' Kommando, ob die zip-Datei auch dort liegt. |
| | <code bash> |
| | cd /c/ofi |
| | ls |
| | </code> |
| | * Entpacken Sie das Archiv mit |
| | <code bash> |
| | unzip wildcards.zip |
| | </code> |
| | * Wechseln Sie (mit ''cd'' ins Verzeichnis ''wildcards'' und verschieben (''mv'') Sie die Dateien wie folgt: |
| | * Alle .jpg-Dateien von 2022 in ein Unterverzeichnis 2022 (mit ''mkdir 2022'' anlegen!) |
| | * Alle .jpg-Dateien von 2023 in ein Unterverzeichnis 2023 |
| | * Alle Logos, die «''ganz-fertig''» sind, in ein Unterverzeichnis ''logos-ganz-fertig''. |
| | * Alle anderen Logos in ein Unterverzeichnis ''logos-archiv''. |
| | * Überprüfen Sie am Schluss, ob Sie alles richtig gemacht haben, indem sie die Datei ''verifier.bash'' starten: |
| | <code bash> |
| | bash verifier.bash |
| | </code> |
| | |
| | |
| | * Studieren Sie den Code in ''verifier.bash'' mit folgender Erklärung: |
| | * ''echo'' gibt alles was folgt auf die Konsole aus (z.B. zur Information). |
| | * ''ls -R'' gibt alle Dateien und Verzeichnisse rekursiv aus (d.h. auch den Inhalt der Unterverzeichnisse etc.). |
| | * ''|'' nimmt die Ausgabe der Kommandozeile davor und nutzt diese als Eingabe für die nächste Kommandozeile. |
| | * ''diff'' vergleicht den Inhalt zweier Dateien zeilenweise und gibt die Unterschiede aus. Wird eine Datei als ''-'' angegeben, wird mit der Eingabe (d.h. hier mit der Ausgabe von ''ls -R'') anstatt einer Datei gearbeitet. |
| | |
| | |
| | Diese Aufgabe gibt es als Screencast vorgelöst: [[https://fginfo.ksbg.ch/~ivo/videos/informatik/vierte-klasse-2024/01-wildcards-in-bash.mp4|weltöffentlich und anonym]] oder [[https://bldsg-my.sharepoint.com/:v:/g/personal/ivo_bloechliger_ksbg_ch/EbhH0o8gzXpMiI41BTL5jwkBGfLOi1BNMoXMwFNtNBU5-g?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=dCbrHa|auf dem kantonalen Sharepoint]] |
| | |
| | </WRAP> |
| | |
| |