# Shellprogrammierung - Linux bietet etliche Befehle, welche in der Shell direkt oder in einem Skript gebraucht werden können wie zB. `cp`, `alias`, `cat`, `rm` - Daneben bietet die Shell Programmierstrukturen wie zB. Schleifen, Verzweigungen, Variablen, usw. - Beide Elemente können in einem Skript verwendet werden, um Aufgaben auf dem System zu automatisieren ___ ### Linux Verzeichnishierarchie - Der Verzeichnisbaum beginnt bei Linux beim Verzeichnis `/` (Vergleichbar mit `C:\` unter Windows) - Das Verzeichnis `/`wird auch Wurzel- oder Rootverzeichnis genannt - Verzeichnisse eine oder mehrere Hierarchiestufen weiter unten werden durch `/`-Zeichen getrennt - Beispiele: /etc/ /usr/local/nginx /usr/bin/ /home/user1 ___ ### Linuxprompt - Die Eingabeaufforderung unter Linux (auch prompt genannt) sieht zB. wiefolgt aus: user@host:/# - Der prompt bildet sich nach dem Schema: `@:#` - Das Tildezeichen `~` ist ein Kürzel für das Heimatverzeichnis des aktuellen Benutzers - Die Heimatverzeichnisse befinden sich i.d.R. unter `/home/` - Einzige Ausnahme: Das Heimatverzeichnis des Administratorusers (`root`) befindet sich unter `/root/` ___ ### Systemspezifische Befehle - Der Befehl `reboot` (oder `shutdown -r` oder `init 6`) startet das System neu - Der Befehl `halt` (`shutdown -h`, `init 0` oder `poweroff`) schaltet das System ab ___ ### Hilfe holen - Der Befehl `man` öffnet sie Hilfeseiten (manual) eines Befehls\ Syntax: `man ` - Der Befehl `apropos` durchsucht alle Hilfeseiten nach einem Stichwort\ Syntax: `apropos ` - Der Befehl `which` findet den Ort eines installierten Programmes\ Syntax: `which ` ___ ### Userspezifische Befehle - Der Befehl `whoami` zeigt den aktuellen Benutzernamen an - Der Befehl `who` zeigt alle am System angemeldeten Benutzer an - Der Befehl `groups` zeigt die Gruppen des aktuellen Benutzernamen an - Der Befehl `id` zeigt die Nutzerid und Gruppen des aktuellen Benutzers an - Der Befehl `su` wechselt den aktuellen Benutzer\ Syntax: `su - ` (- sogt dafür, dass ins Heimverzeichnis der neuen Users gewechselt wird) ___ ### Userspezifische Befehle - Der Befehl `useradd` fügt einen neuen Benutzer hinzu\ Syntax: `useradd ` - Der Befehl `userdel` löscht einen bestehenden Benutzer\ Syntax: `userdel ` - Der Befehl `passwd` kann (unter anderem) das Passwort wechseln\ Syntax: `passwd ` - Der Befehl `logout` loggt den aktuellen Benutzer vom System aus (ebenso `exit`) ___ ### Aliase - Aliase dienen als Nutzerspezifisches Kürzel für einen Befehl / Befehlskombination - Ein alias wird wiefolgt gesetzt: `alias =""` - Beispiel: user@host:/etc# alias gohome="cd ~" user@host:/etc# pwd /etc user@host:/etc# gohome user@host:~# pwd /home/user ___ ### Verzeichnisrelevante Befehle - Der Befehl `pwd` (*present work directory*) zeigt das aktuelle Verzeichnis an - Der Befehl `cd` ändert das aktuelle Verzeichnis.\ Syntax: `cd ` - Der Befehl `mkdir` erstellt ein neues Verzeichnis.\ Syntax: `mkdir ` - Der Befehl `rmdir` lsöcht ein bestehendes Verzeichnis.\ Syntax: `rmdir ` (Verzeichnis muss leer sein!) - Der Befehl `ls` listet den Verzeichnisinhalt auf\ Syntax: `ls ` ___ ### Dateirelevante Befehle - Der Befehl `cp` kopiert Dateien/Verzeichnisse\ Syntax: `cp `\ Syntax Verzeichnisse: `cp -R ` - Der Befehl `rm` löscht Dateien/Verzeichnisse\ Syntax: `rm `\ Syntax Verzeichnisse: `rm -r ` - Der Befehl `mv` verschiebt (= umbenennen) Dateien/Verzeichnisse\ Syntax: `mv ` - Der Befehl `touch` erstellt eine neue leere Datei\ Syntax: `touch ` - Der Befehl `cat` gibt Dateinhalt aus\ Syntax: `cat ` - Der Befehl `wc` zählt Wörter oder Linien eines Dateiinhaltes\ Syntax (linien): `wc -l ` (-w zählt \# Wörter) - Der Befehl `echo` gibt eine Zeichenkette aus\ Syntax: `echo ""` ___