Full Transcript

UNIX SHELL (WIEDERHOLUNG) l Eine Shell ist die Kommandozeile mit der man Programme startet l Die Shell ist somit die niedrigste, systemnahe Software, mit der ein Benutzer (engl. user) interagiert. l Shells haben Eigenschaften von Programmiersprachen. Es gibt folgende bekannt...

UNIX SHELL (WIEDERHOLUNG) l Eine Shell ist die Kommandozeile mit der man Programme startet l Die Shell ist somit die niedrigste, systemnahe Software, mit der ein Benutzer (engl. user) interagiert. l Shells haben Eigenschaften von Programmiersprachen. Es gibt folgende bekannte Shells: l Bourne Shell (Kommando: sh) --> Standard in Linux l C-Shell (csh) l Korn Shell (ksh) Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) l Z-Shell (zsh) --> Standard in macOS Systemnahe Programme(1/8) l Es sind nicht alle genannten Shells automatisch in Linux installiert. Auf jeden Fall ist die bash Bibliotheken (3) fester Bestandteil aller verbreiteter Linux Distributionen. Betriebssystem API (2) Software Hardware 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 7 UNIX BASH (WIEDERHOLUNG) l Mit der UNIX bash können wir: l Systemnahe Programme starten l Grafische Programme starten l Programme stoppen (engl. terminate / kill) l Komplexe Shell-Skripte erstellen und ausführen! l In der Kommandozeile steht die Eingabeaufforderung: l rakeller@James:~$| l Hier können Sie Programme starten … Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) l Programme pausieren (STRG/CTRL+Z) und beenden (STRG/CTRL+C) Systemnahe Programme(1/8) l Zu allen Befehlen gibt es „Manual Pages“ (bspw. man bash) --> RTFM J Bibliotheken (3) Betriebssystem API (2) Software Hardware 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 8 UNIX BASH: EINGABE SYNTAX Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Die Eingabestruktur (Syntax) sieht wie folgt aus (siehe Man-Pages): Bibliotheken (3) l Betriebssystem API (2) $ program [Param1] [P2|P3] –p pid ↵ Hardware Alles was auf der Schließen sich Parameter SHELL einzugeben aus, werden sie mittels ist, steht nach $. dem Oder | angegeben. Optionale Parameter Argumente für die Parameter in eckigen Klammern sind unterstrichen angegeben... 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 9 UNIX BASH: EINGABE SYNTAX Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Die Eingabestruktur (Syntax) sieht wie folgt aus (siehe Man-Pages): Bibliotheken (3) l Betriebssystem API (2) $ program [Param1] [P2|P3] –p pid ↵ Hardware l UNIX tools verwenden meist ähnliche Parameter, die man sich gut merken kann wie: l -i Ignore case (Groß-/Kleinschreibung egal) l -h Human readable (Einfach lesbar) l -r Recursive (Alle Dateien & in Unterordnern) l -p PID Process ID wird als Argument angegeben. l -l Long format (z.B. ls zeigt alle Dateien) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 10 UNIX BASH: WEITERE EIGENSCHAFTEN Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l STRG+Z / CTRL+Z pausiert den laufenden Prozess Bibliotheken (3) Betriebssystem API (2) l Verbraucht somit keine weitere CPU Zeit mehr Hardware l Der pausierte Prozess kann mit bg in den Hintergrund, bzw. mit fg wieder in den Vordergrund gebracht werden l Mit & werden Programme sofort in im als Hintergrundprozess gestartet: l rakeller@James:~$ firefox &↵ 8631 l Programme können mit STRG+C / CTRL+C beendet (kill) werden l Oder mittels ProzessID (PID) gestoppt werden: l rakeller@James:~$ kill 8631 ↵ (stoppt Firefox Prozess!) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 11 UNIX BASH: STRUKTUR KOMMANDOZEILE Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Die Kommandozeile setzt sich zusammen aus: Bibliotheken (3) l Betriebssystem API (2) $ dgrewe@@bs-vm:~$| Hardware Dem Verzeichnis (Directory), in dem man sich befindet – hier Dem Nutzername das Heimat-Verzeichnis, auch gespeichert in der Umgebungs- variablen $HOME, oder auch kurz ~ (Tilde) genannt! Mehr dazu weiter unten... Rechnername 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 12 UNIX BASH: STRUKTUR KOMMANDOZEILE Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l Die Kommandozeile setzt sich zusammen aus: Bibliotheken (3) Betriebssystem API (2) $ dgrewe@@bs-vm:~$| Hardware l Die Kommandozeile wird definiert durch die Umgebungsvariable PS1: $ echo $PS1↵ (Ausgabe der Variablen PS1) $ export PS1='User \u on \h in directory \w : '↵ setzt die Variable PS1 auf einen etwas zu ausführlichen Schreibstil: User dgrewe on bs-vm in directory ~ : | l Die anderen Zeichen @, :, $, (Leerzeichen) sind nur syntaktischer Zucker l Man kann mit PS1 ganz verrückte Spielereien setzen (Farbe, Datum, Sub-shell, …) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 13 UNIX BASH: DER BEFEHL CD Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l Nach dem Start „zeigt“ die Shell auf das Heimverzeichnis des Benutzers $HOME, ~ Bibliotheken (3) Betriebssystem API (2) Hardware $ dgrewe@@bs-vm:~$| l Mit dem Befehl cd (change directory) können wir uns frei in Verzeichnissen bewegen: $ cd /home/↵ (Wechsel in absolutes Verzeichnis) $ cd.. ↵ (Wechsel relativ: hier Verzeichnis hoch) $ cd ↵ (shortcut für Wechsel nach $HOME) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 14 UNIX BASH: DER BEFEHL LS Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Mit dem Befehl ls (list) können wir uns die Inhalte eines Verzeichnis Bibliotheken (3) l Betriebssystem API (2) ausgeben lassen: Hardware $ dgrewe@@bs-vm:~$ ls ↵ l Weitere Beispiele von ls: $ ls -a ↵ (zeigt alle versteckten Inhalte) $ ls -al ↵ (zeigt alle Dateien im Long-Format) l Vor allem letzterer Befehl zeigt die Datei-Rechte oder auch UNIX Permissions genannt 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 15 UNIX BASH: MAN PAGES Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l Zu allen Kommandos finden Sie Hilfe in den „Manual Pages“ (man pages) Bibliotheken (3) l $ man ↵ # für manual selbst Betriebssystem API (2) l $ man bash ↵ # Hilfsseite zur Bash Hardware l Die „Man-Pages“ sind in Bereiche 1-8 gruppiert: l $ man 1 bash ↵ # 1=System-& Benutzerprogramme l $ man 2 gettimeofday ↵ # 2=Systemcalls & Kernelparameter l $ man 3 printf ↵ # 3=Bibliotheksaufrufe l $ man 4 kmem ↵ # 4=Gerätetreiber & Netz.-prot. l $ man 5 ssh_config ↵ # 5=Versch. Konfigurationdateien l $ man 7 tcp ↵ # 7=Netzwerk l $ man 8 netstat ↵ # 8=Systemadmin Tools l Alle genannten Nummern gelten für Linux (nicht macOS, da dies auf BSD basiert). Diese durchsuchen Inhalte in der $MANPATH Variable: /usr/share/man/:/usr/local/share/man 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 16 UNIX BASH: DER ECHO BEFEHL Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Mit Hilfe des Befehls echo lassen sich Ausgaben auf der Kommandozeile Bibliotheken (3) l Betriebssystem API (2) schreiben Hardware l $ echo “Hello World“ ↵ l $ Hello World # gibt “Hello World“ aus 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 17 UNIX BASH: VARIABLEN VAR Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l Mit Hilfe des Befehls var lassen sich Variablen setzen: Bibliotheken (3) Betriebssystem API (2) l $ var=4711 ↵ Hardware l $ echo “var ist $var“ ↵ # Ausgabe Inhalt var l $ var ist 4711 l Mit var=… wird ein Wert zugewiesen, mit $var wird der Wert gelesen. l Länger gültige Variablen werden GROSS geschrieben (erhöht Unterscheid- und Lesbarkeit) l Mittels {} kann das Arbeiten mit Variablen explizit gemacht werden und testet auf leere/nicht-existente Variablen -> weniger Fehler l $ echo ${GROSS} 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 18 UNIX BASH: UMGEBUNGSVARIABLEN Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l Umgebungsvariablen sind wie echte Variablen und werden an Programme Bibliotheken (3) Betriebssystem API (2) übergeben. Variablen kann man mit C-Funktion ptr=getenv(“VARNAME“) Hardware lesen (siehe $ man 3 getenv) l Es gibt eine Menge sinnvoller Umgebungsvariablen, z.B.: l HOME # zeigt Heimatverzeichnis des Nutzers l PWD # aktuelles Arbeitsverzeichnis (present working directory) l OLDPWD # vorheriges Arbeitsverzeichnis l USER # der Benutzername l Umgebungsvariablen setzt man durch Zuweisung und ließt sie mit $VAR aus l $ export MEINE_VARIABLE=1 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 19 UNIX BASH: EINGABEN Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) l Die Kommandozeile ist wie ein Editor mit vielen Tastenkürzeln: Bibliotheken (3) Betriebssystem API (2) l CTRL-A # Cursor springt an Zeilenanfang Hardware l CTRL-E # Cursor springt and Zeilenende l CTRL-XX # merkt sich Position und springt zur letzten zurück l ESCß # (Escape+Backspace) löscht ganzes Wort vor Cursor l ESC-D # Löscht Wort nach Curser und speichert in einem Puffer l CTRL-Y # Yank: fügt den Puffer an dieser Stelle wieder ein l CTRL-C # Bricht die derzeitige Zeile ab l CTRL-L # Clear Screen, wie “clear“, leert das Fenster l CTRL-R # Rückwärtssuche bisheriger Befehle (mächtiger Befehl) l TAB # vervollständigt Filename (wie Autovervollständigung) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 20

Use Quizgecko on...
Browser
Browser