Schnappe dir ein **Blatt Papier** und notiere dir deine Erkenntnisse zu den nachfolgenden Aufgaben! Öffne ein **Terminal** und bearbeite die folgenden Aufgaben, um die wichtigsten Befehle kennenzulernen. Übrigens: Innerhalb des Terminals (des geöffneten Fensters) läuft wiederum die sogenannte ''shell'', mit der du dann interagierst. {{:aufgabe.png?nolink |}} === (A1) whoami === **Aufgabe:** Finde heraus, unter welchem Benutzer du aktuell angemeldet bist.\\ **Erklärung:** Der Befehl ''whoami'' zeigt den Benutzernamen des aktuell angemeldeten Benutzers an. ---- {{:aufgabe.png?nolink |}} === (A2) pwd === **Aufgabe:** Zeige das aktuelle Verzeichnis an, in dem du dich befindest\\ **Erklärung:** * Der Befehl ''pwd'' (print working directory) zeigt den vollständigen Pfad des aktuellen //Arbeitsverzeichnisses// an (also des Verzeichnisses, in dem die ''shell'' / das Terminal gerade geöffnet ist). * In Linux beginnt der Dateipfad immer beim Root-Verzeichnis, das durch einen Schrägstrich (/), auch Slash genannt, dargestellt wird. * Im Gegensatz zu Windows, wo Pfade mit einem Laufwerksbuchstaben beginnen (z.B. C:\), gibt es in Linux kein Konzept von Laufwerksbuchstaben. Alle Dateien und Verzeichnisse befinden sich in einer einzigen hierarchischen Struktur unterhalb des Root-Verzeichnisses. ---- {{:aufgabe.png?nolink |}} === (A3) ls === **Aufgabe:** Liste alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf.\\ **Erklärung:** * Nutze den Befehl ''ls''. * Die bisherigen Befehle haben keine **Parameter** genutzt. Du hast also einfach nur den Namen des Befehls eingetippt und das hat genügt. Häufig benötigst du aber **Parameter**, um bestimmte Dinge zu erreichen. Tippe zuerst den Befehl, dann ein Leerzeichen und dann die gewünschten Parameter ein: * ''-l'': Zeigt die Liste im Langformat, inklusive Details wie Berechtigungen, Anzahl der Links, Besitzer, Größe und Änderungsdatum. * ''-a'': Zeigt alle Dateien an, inklusive versteckter Dateien, die mit einem Punkt (.) beginnen. * ''-h'': Zeigt die Dateigrößen in einem menschenlesbaren Format (nur in Kombination mit ''-l'' sinnvoll). **Weitere Aufgaben** (mit Parametern): * Liste alle Dateien und Verzeichnisse __im Langformat__ auf. ++++ Lösung| ''ls -l'' ++++ * Liste alle Dateien und Verzeichnisse __im Langformat__ und in __menschenlesbarem Format__ auf. Erkennst du den Unterschied? ++++ Lösung| ''ls -l -h'' oder auch in Kurzschreibweise: ''ls -lh'' ++++ * Hänge jetzt zuletzt noch den Parameter ''-a'' an den Befehl an und schaue, was du dann alles siehst. ++++ Lösung| ''ls -lha'' ++++ ---- {{:aufgabe.png?nolink |}} === (A4) cd === **Aufgabe:** Wechsle in das Verzeichnis /home.\\ **Erklärung:** * Der Befehl ''cd'' (change directory) wird verwendet, um in ein anderes Verzeichnis zu wechseln. * Nach dem Befehl musst du bei ''cd'' noch mit einem **Argument** angeben, wo du hinmöchtest. Dieses Argument benötigt, anders als die Parameter, **keinen** Bindestrich zu Beginn. ++++ Lösung| ''cd /home'' ++++ **Absolute und relative Pfade:** * **Absoluter Pfad:** Ein absoluter Pfad beginnt immer mit dem Root-Verzeichnis (/) und gibt den vollständigen Pfad zu einer Datei oder einem Verzeichnis an. Beispiel: /home/benutzername/Dokumente * **Relativer Pfad:** Ein relativer Pfad gibt den Pfad relativ zum aktuellen Verzeichnis an. Er beginnt **nicht** mit einem Schrägstrich. Beispiel: Wenn du dich im Verzeichnis /home/benutzername befindest, ist Dokumente ein relativer Pfad, der zum Verzeichnis /home/benutzername/Dokumente führt. Weitere Aufgaben zu ''cd'': * Bist du noch immer in ''/home''? Dann bewege dich wieder relativ zu ''/home/'', wobei mit '''' dein Benutzername gemeint ist. ++++ Lösung| ''cd '' ++++ * Wechsel zum absoluten Pfad ''/var/log'' ++++ Lösung| ''cd /var/log'' ++++ * Wechsel zum absoluten Pfad ''/home//Dokumente'' ++++ Lösung| ''cd /home//Dokumente'' ++++ * Wechsel eine Ebene **nach oben**, also zu ''/home/''. Das kannst du mit einem absoluten Pfad machen, es gibt aber auch den relativen Pfad-Befehl ''..'', mit dem du dich relativ in das darüberliegende Verzeichnis begibst. ++++ Lösung| ''cd ..'' ++++ * Wechsel wieder relativ ins Verzeichnis ''Dokumente''. Fachlich korrekt müsste man vom Verzeichnis ''./Dokumente'' reden. Wenn man vor einen Pfad einen Punkt ''.'' schreibt, dann ist damit immer der Pfad ausgehend vom aktuellen Verzeichnis gemeint. Man stellt mit dem Punkt also klar, dass der Pfad wirklich als relativer Pfad zum aktuellen Verzeichnis zu interpretieren ist. ++++ Lösung| ''cd Dokumente'' ++++ * Wechsel abschließend zum **benachbarten** Verzeichnis ''/home//Schreibtisch''. Du musst dazu keinen absoluten Pfad eingeben, sondern kommst durch die Kombination der letzten Befehle mit einem einzigen Befehl zu diesem Pfad! ++++ Tipp | Du musst erst eins "nach oben". ++++ ++++ Lösung| ''cd ../Schreibtisch'' ++++ ---- {{:aufgabe.png?nolink |}} === (A5) mkdir === **Aufgabe:** Erstelle ein neues Verzeichnis namens ''Projekttage'' im aktuellen Verzeichnis. **Erklärung:** Der Befehl ''mkdir'' (make directory) wird verwendet, um ein neues Verzeichnis zu erstellen. Du musst (genau wie bei ''cd'') noch ein Argument nach dem mkdir-Befehl eingeben. ++++ Lösung| ''mkdir Projekttage'' ++++ Weitere Aufgabe: * **Prüfe** in der shell, ob der Ordner auch tatsächlich erstellt wurde! (Nutze einen der zuletzt kennengelernten Befehle.) ---- {{:aufgabe.png?nolink |}} === (A6) rm === **Aufgabe:** Lösche den soeben erstellten Ordner wieder.\\ **Erklärung:** Der Befehl ''rm'' löscht Dateien. Wenn du zusätzlich den Parameter ''-r'' verwendest, dann können auch Verzeichnisse gelöscht werden. **ACHTUNG:** Bei der Benutzung von ''rm'' gibt es weder eine Nachfrage, ob du die Datei/Verzeichnis wirklich löschen willst, noch gibt es einen Papierkorb. Wenn du etwas gelöscht hast, dann ist es weg - für immer!\\ Gehe also mit dem Befehl ''rm'' **sehr vorsichtig** um! ++++ Lösung| ''rm -r Projekttage'' ++++ ---- {{:aufgabe.png?nolink |}} === (A7) nano === **Aufgabe:** Erstelle die Textdatei ''hallo.txt'' mit beliebigem Text.\\ **Erklärung:** Mit dem Befehl ''nano'' startest du einen simplen Texteditor, also ein Programm, mit dem du (Text-)Dateien bearbeiten kannst. Als Argument benötigst du den Dateinamen der Datei, die du erstellen oder bearbeiten willst. Wenn du den Text getippt hast, dann kannst du mit der Tastenkombination ''Strg + X'' schließen. Anschließend musst du dann zusätzlich noch mit der Taste ''Y'' (für Yes) bestätigen, dass du die Änderungen speichern willst und anschließend ENTER drücken. ++++ Lösung| ''nano hallo.txt''\\ Wenn du dann beliebigen Text getippt hast, musst du speichern und schließen mit ''Strg + X'', dann ''Y'', dann ENTER. ++++ **Zusatzaufgabe:** Öffne die Datei anschließend erneut mit ''nano'', um zu prüfen, ob der Inhalt auch wirklich gespeichert wurde. Nimm Änderungen am Text vor und schließe danach ''nano'', **ohne** die Änderungen zu speichern. ++++ Lösung| ''nano hallo.txt''\\ Anschließend ''Strg + X'', **''N''** und ENTER ++++ ---- {{:aufgabe.png?nolink |}} === (A8) mv === **Aufgabe:** Nenne die soeben erstellte Datei ''hallo.txt'' in ''projekttage.txt'' um.\\ **Erklärung:** Mit dem Befehl ''mv'' (move) kannst du Dateien oder auch Verzeichnisse umbenennen und/oder verschieben. Achtung: Das ist der erste Befehl, der immer **zwei Argumente** benötigt. Bsp.: ''mv alterName privat/neuerName.txt'' -> Mit diesem Befehl wurde die Datei ''alterName'' sowohl in den (bereits vorhandenen!) Unterordner ''privat'' verschoben und zusätzlich wurde der Dateiname zu ''neuerName.txt'' geändert. ++++ Lösung| ''mv hallo.txt projekttage.txt'' ++++ ---- {{:aufgabe.png?nolink |}} === (A9) cp === **Aufgabe:** Kopiere die Datei ''projekttage.txt'' und nenne die neue Datei ''linux.txt''. **Erklärung:** Nutze den Befehl ''cp'' (copy). Bsp.: ''cp original kopie'' -> Mit diesem Befehl kopierst du die Originaldatei ''original'' und erstellst direkt nebenan eine Kopie namens ''kopie''. Du könntest die Kopie auch direkt in anderen Verzeichnissen erstellen (''... ./ordner/kopie''). Wenn du ein ganzes Verzeichnis kopieren willst, dann benötigst du nach dem Befehlsnamen noch den Parameter ''-r'' (für rekursiv). ++++ Lösung| ''cp projekttage.txt linux.txt'' ++++ **Zusatzaufgabe:** Lösche die erstellte und unnötige Kopie wieder. ++++ Lösung| ''rm linux.txt'' ++++ ---- 🥳 **Super! Damit hast du die wichtigsten Befehle für die Linux-Shell kennengelernt!** 🎉\\ {{:aufgabe.png?nolink |}} === (A10) Ausprobieren === Probiere nun die kennengelernten Befehle selbstständig weiter aus! Erstelle Dateien und Verzeichnisse, kopiere sie, nenne sie um, ändere den Inhalt von Dateien, lösche sie wieder, lass dir den Inhalt der Verzeichnisse ausgeben usw... **Tipp:** Wenn du für einen Befehl weitere Parameter kennenlernen/nutzen willst, dann kannst du das Manual (die Anleitung) für jeden einzelnen Befehl anzeigen lassen. Tippe dazu ''man ls'' um z. B. das Manual für den Befehl ''ls'' angezeigt zu bekommen. Im Manual kannst du dann hoch und runter scrollen. Tippe abschließend die Taste ''q'' (quit), um das Manual wieder zu verlassen.