02_bs_bash_f57cc619ec3ccb8f754ba5ba6e9b322c.pdf

Full Transcript

BETRIEBSSYSTEME (BS) II. BASH PROGRAMMIERUNG PROF. DR.-ING. RAINER KELLER PROF. DR. DENNIS GREWE 1 AGENDA l Was ist die Bash? l Wie gebe ich Befehle in die Bash ein? l Wie navigiere ich im Dateisystem mit der Bash? l Wie entwickle ich Programme für d...

BETRIEBSSYSTEME (BS) II. BASH PROGRAMMIERUNG PROF. DR.-ING. RAINER KELLER PROF. DR. DENNIS GREWE 1 AGENDA l Was ist die Bash? l Wie gebe ich Befehle in die Bash ein? l Wie navigiere ich im Dateisystem mit der Bash? l Wie entwickle ich Programme für die Bash? 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 2 ZIELE l Entwicklung von kleinen Programmen für die Bash erlernen l Wichtigste Kommandos in der Bash zur Navigation und Interaktion mit dem Dateisystem. 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 3 EINFÜHRUNG IN DIE BASH Quelle: Dennis Grewe 4 HINWEIS l Die nachfolgenden Inhalte sollten Sie direkt in Ihrer Linux-VM oder an einem Linux-Rechner machen 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 5 GRAFISCHE OBERFLÄCHE (GUI) VS. KOMMANDOZEILE (SHELL) Ausschalten Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Bibliotheken (3) Ubuntu Desktop Betriebssystem API (2) Software Hardware Anwendungsprogramme (1) Anwendungen Grafische Benutzeroberfläche (1) Systemnahe Programme(1/8) Bibliotheken (3) Betriebssystem API (2) Hardware Terminal Weitere Anwendungsprogramme (1) Grafische Benutzeroberfläche (1) Programme Systemnahe Programme(1/8) l Grafische Programme erlauben eine intuitive und effiziente Arbeitsweise. Bibliotheken (3) Betriebssystem API (2) l Systemdetails und systemnahe Informationen bekommt man aber meist nur über Programme die Software von der Shell gestartet werden, indem man über die Kommandozeile (Terminal) interagiert. Hardware 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 6 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, …) [Link: PS1 Guide] 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 UNIX BASH: BEFEHLE l Weitere Bash Kommandos und Befehle sind in dem Cheat Sheet Bash aufgelistet l Bitte lernen Sie diese im Eigenstudium! [Bild von vecstock auf Freepik] 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 21 BESONDERE KOMMANDOS UND PROGRAMME DER BASH 22 BASH: PROGRAMMIERBARKEIT l Die “Mächtigkeit“ aller Shells liegt in der Programmierbarkeit! l UNIX verfolgt dabei das KISS Prinzip: Keep It Simple, Stupid l 1 Programm macht 1 Sache -> diese aber gut. l Beispiele: sort, date, find, … l UNIX Programme lassen sich kombinieren: l Die “Standardausgabe“ eines Programms (File-Descriptor 1) lässt sich in die Eingabe des nächsten Programms weiterreichen (mittels Pipe “|“ Symbol) l $ sort file.txt | tail -n 5 | grep -E 'd$‘ l Ablauf: Sortiert file.txt alphanumerisch, nimmt die letzten 5 Zeichen und such mit regulärem Ausdruck nach Zeilen die auf “d“ enden! 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 23 BASH: RÜCKGABEWERTE l Fehlerfrei beendete Programme liefern immer den Rückgabewert 0, ansonsten ungleich Null. l Die Fehlerfreiheit kann man in Bash abfragen mittels: l && Programm fehlerfrei beendet, und l || Programm fehlerbehaftet beendet l $ grep -qi "gold" file.txt && echo 'Found Gold!‘ l $ gcc –Wall –O2 –o app app.c &&./app J 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 24 BASH: MIT FIND DATEIEN, VERZEICHNISSE UND GERÄTE FINDEN (I) l Mit find lassen sich Dateien, Verzeichnisse, Gerätedateien finden: l $ find. -maxdepth 3 -name \*.c l Ablauf: Findet alle Dateien in diesem Verzeichnis (.) und bis zu drei Unterverzeichnisse tiefer mit der Dateiendung.c (also C-Programmdatei). l Achtung: Die Verknüpfung mittels Pipes ist manchmal schwierig, da UNIX Dateien Leerzeichen (und Sonderzeichen) enthalten dürfen. l Sonderzeichen (bspw. Leerzeichen, das ? Oder der *) müssen mit “\“ escaped werden! l $ find. –maxdepth 3 –name \*.c –print0 | xargs -0 grep –i 'Fix‘ l Ablauf: Findet alle Dateien in diesem Verzeichnis (.) und bis zu drei Unterverzeichnisse tiefer mit der Dateiendung.c (also C-Programmdatei), welche Fix enthalten (Groß/Kleinschreibung ignoriert). 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 25 BASH: MIT FIND DATEIEN, VERZEICHNISSE UND GERÄTE FINDEN (II) l Die Syntax für find lautet: l $ find DIR [Parameter]* , wobei die Parameter sein können: l -type X Suche nach Typ u.a. f (file), d (directory), l (soft-link) l -iname X Name der Datei/Verzeichnis entspricht dem Reg. Ausdruck l -ctime -1 Verändert vor weniger als 24h (bspw. kann das in’s Backup!) l -user X Datei gehört Nutzer X (auch als numerischer Wert) l -nouser Datei gehört keinem gültigen Nutzer (nicht in /etc/passwd) l -nogroup Datei gehört keiner gültigen Gruppe (nicht in /etc/group) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 26 BASH: SONDERZEICHEN UND STRING-BEHANDLUNG (I) l Bestimmte Sonderzeichen müssen geschützt werden, sollten diese bspw. In einem Dateinamen vorkommen: l / à Verzeichnistrenner (das wäre aber als Teile eines Dateinamens sehr ungewöhnlich...) l ? à WildCard für ein beliebiges Zeichen l * à WildCard für eine beliebige Zeichenkette: $ ls bo*t listet Dateien boat, bolt und boot... Und eben bot. l [ ] à Ein Teil eines regulären Ausdrucks für eine Zeichenauswahl $ ls bo[ao]t listet die Dateien boat und boot... Aber nicht bolt oder wieder bot. l [A-Z] à Ein Zeichenbereich $ ls bo[a-o]t listet die Dateien boat, bolt... Aber auch bobt, boct, bodt, usw. l … 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 27 BASH: SONDERZEICHEN UND STRING-BEHANDLUNG (II) l Bestimmte Sonderzeichen müssen geschützt werden, sollten diese bspw. In einem Dateinamen vorkommen: l … l < , > à Ein Sonderzeichen um Ein- und Ausgabe umzuleiten $ program > log.txt leitet die Std.-Ausgabe nach log.txt, aber nicht die Fehlerausgabe l | || ; && à Verknüpfung von Programmen; einzig neu „;“ als Trenner von Befehlen: $ programm1 ; programm2 wie wenn die Programme auf zwei Zeilen geschrieben wären l ( , ) à Zusammenfassung von Programmen & Befehlen zu Gruppen 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 28 BASH: SONDERZEICHEN UND STRING-BEHANDLUNG (III) l Besondere Beachtung sollten Anführungszeichen finden: l "x" à Ein String (also inklusive Leerzeichen), wird von der Shell noch interpretiert, d.h. darin enthaltene $var und andere Sonderzeichen werden textuell ersetzt! l 'x' à Ein String (also inklusive Leerzeichen), wird nicht interpretiert. Man kann also getrost auch Dollars übergeben: echo 'mucho $$!‘ l `x` à Erzeugen einer Sub-Shell, bspw. zum Erzeugen von Eingabe. Die Alternative $(x) ist deutlich besser lesbar (s.u.)! l Tatsächlich haben alle ihre Berechtigung. l Für Profis: Eine Subshell erlaubt das Evaluieren, bspw. einer Argumentenliste: $ for i in $(cat stud_list.txt); do du –hs $i ; done Das i nimmt die Werte an, du liefert Disk Usage der Verzeichnisse der Studies! 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 29 BASH: DAS $ STEUERZEICHEN l Das $ ist ein besonders Sonderzeichen. Die Bash interpretiert folgendes: l $0 à Name des ausgeführten Scripts, wenn keines ausgeführt: "-bash" l $1 à Erster dem Script übergebener Parameter ($2 ist zweiter, usw.) l $* à Alle Parameter zusammengeführt, aber durch Leerzeichen $IFS getrennt) l $# à Die Anzahl der übergebenen Parameter l $@ à Die einzelnen Parameter l $? à Rückgabewert des zuletzt beendeten Programms l $$ à Die Prozess-ID (PID) des aufrufenden Skripts / der Bash l $! à PID des letzten, im Hintergrund laufenden Prozesses: $ sleep 60 & # Schläft 60 sek., Shell kommt zurück 1234 # und liefert u.a. die PID von sleep $ echo $! # mit $! bekommt man die PID direkt! l Mit $((... )) wird ein arithmetischer Ausdruck evaluiert, bspw. $ i=0 $ while test $i -lt 10; do echo i:$i; i=$(($i + 1)); done 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 30 BASH: TEST PROGRAMM l Mit Hilfe des Bash-Programms test können Bedingungen geprüft werden: l -e file.txt à Parameter wird als Datei interpretiert, und prüft auf Existenz! l -d FILE_OR_DIR à Ob dies ein Verzeichnis / Directory ist l -f file.txt à Ob dies ein File ist... l -r file.txt à Datei ist lesbar (readable), -w writeable, -x executable l -s file.txt à Datei ist größer 0 Bytes l Strings können ebenso getestet werden: l -z à Parameter als String interpretiert, prüft Länge auf Null (zero) $ s=""; test –z "$s" && echo "s ist 0 Zeichen lang“ l test s1 = s2 prüft ob String s1 und s2 gleich sind l Numerische Tests: l N -le M prüft ob N kleiner gleich M ist (lower or eqal) l N -gt M prüft ob N größer gleich M ist (greater than) 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 31 BASH: TAR PROGRAMM l Mit Hilfe des Tape Archive (kurz: tar) Programm lassen sich Backups aller Dateien erzeugen. Je nach Parameter und Einstellung werden die Daten direkt komprimiert (verbraucht weniger Speicherplatz): l $ tar [parameter]* l -c à Create: Erstellt neue tar Datei l -f file.txt à FileName: Name der Datei, die gepackt werden soll l -v à Verbose: Konsolenausgaben über aktuellen Prozesschritt l -x file.txt à Extract: Entpackt eine tar Datei zu einem Verzeichnis l Beispiel: l $ find. -ctime -1 -print0 | tar -cvf tar-`date '+%Y.%m.%d'`.tar --null -T – l Ablauf: Auflisten aller Dateinamen im aktuellen Verzeichnis (.) und erstellen eines tar backups. 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 32 TIPPS UND TRICKS Quelle: [Image by rawpixel.com on Freepik] 33 TIPPS UND TRICKS: ALIAS l Mit Hilfe von alias lassen sich Bash Befehle umprogrammieren: l $ alias l=“ls –al“ à nur noch kleines l für Auflisten der Dateien l $ alias mnt="mount | awk -F' ' '{ printf \"%s\t%s\n\",\$1,\$3; }' | column -t | egrep ^/dev/ | sort” l Ablauf: Legt Befehl “mnt” fest der alle aktuell eingebundenen Geräte auflistet und nach Namen sortiert. l Hinweis: Um vorgenommene Einstellungen rückgängig zu machen, hilft das aus- und wieder einloggen. 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 34 TIPPS UND TRICKS:.BASHRC /.ZSHRC l Beim Einloggen des Benutzers wird standardmäßig die Datei ~/.bashrc gelesen. l Hier kann man Änderungen vornehmen um eigene Kürzel, Befehle oder Programme zu laden l Hinweis: Da macOS die z-Shell benutzt können Änderungen in der ~/.zshrc vorgenommen werden. 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 35 TIPPS UND TRICKS: TOP PROGRAMM l Das top Programm bietet eine dynamische Echtzeitansicht auf das laufende Linux-System. Es kann Systemzusammenfassungen, sowie eine Liste der Prozesse und verwendeter Ressourcen anzeigen. 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 36 BETRIEBSSYSTEME SERVER: BS_LAB l Für jeden Teilnehmer dieses Kurses existiert ein Account auf dem Betreibssysteme-Server bslab-it: l Login: $ ssh [email protected] l Jeder Nutzer hat: l eine eindeutige User-ID (UID), diese steht in /etc/passwd l Gehört min. zu einer Benutzer-gruppe (z.B.: zu staff) l Jeder Nutzer darf: l (fast) beliebig viele Prozesse starten (Hinweis: Ein Programm besteht aus mind. einem Prozess) l Manche Nutzer dürfen SuperUser root werden, mit su - oder mit sudo. l Vorsicht: Dieser Nutzer darf alles, wirklich ALLES!!! 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 37 TIPPS UND TRICKS: ALIAS l Mit Hilfe von alias lassen sich Bash Befehle umprogrammieren l $ tar [parameter]* l -c à Create: Erstellt neue tar Datei l -f file.txt à FileName: Name der Datei, die gepackt werden soll l -v à Verbose: Konsolenausgaben über aktuellen Prozesschritt l -x file.txt à Extract: Entpackt eine tar Datei zu einem Verzeichnis l Beispiel: l $ find. -ctime -1 -print0 | tar -cvf tar-`date '+%Y.%m.%d'`.tar --null -T – l Ablauf: Auflisten aller Dateinamen im aktuellen Verzeichnis (.) und erstellen eines tar backups. 01.10.2024 Profs. Grewe & Keller | Betriebssysteme | Bash Programmierung 38 ZUSAMMENFASSUNG l Kennenlernen der Bash und des Funktionsumfangs l Vorstellung der wichtigsten Bash Befehle l Tipps und Trick im Umgang mit der Bash 01.10.2024 Prof. Dr. Dennis Grewe | Modul Programmieren SWB/TIB 39

Use Quizgecko on...
Browser
Browser