Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
lpi1:shell_configdateien [2011/07/19 08:55] ingo_wichmann [Häufige Kommandofolgen abkürzen] |
lpi1:shell_configdateien [2023/10/25 07:53] (aktuell) |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== Bash Konfigurationsdateien ===== | + | ===== .bashrc ====== |
| - | Testen, welche Konfigurationsdateien wann benutzt werden: | + | ==== Aufgabe 1: History ==== |
| - | for file in /etc/profile /etc/bash.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc ~/.bash_logout; | + | |
| - | do | + | |
| - | echo "echo Hello $file" >> $file | + | |
| - | done | + | |
| + | Erweitere die history list so, dass sie Platz für 2000 Befehle hat und 200000 Befehle in einer Datei bewahrt. | ||
| + | Was ändert sich mit der Variable\\ | ||
| + | ''HISTTIMEFORMAT='[%F_%T] ''' | ||
| + | |||
| + | |||
| + | ==== Aufgabe 2: Prompt ==== | ||
| + | |||
| + | Lies das Kapitel "Prompting" in der "man"-Page für "bash". Erstelle einen Prompt-String welcher die folgenden Daten beinhaltet: | ||
| + | |||
| + | * Loginname | ||
| + | * Hostname des Rechners | ||
| + | * die History-Nummer des aktuellen Kommandos, in Klammern "z. B. (10)" | ||
| + | * das aktuelle Verzeichnis | ||
| + | * Prompt-Zeichen für normalen Benutzer oder "root" | ||
| + | |||
| + | Baue das neue Prompt in das Profile-Startscript für die Bash für deinen aktuellen Benutzer ein. | ||
| + | |||
| + | |||
| + | ==== profile oder bashrc? ==== | ||
| + | ''umask'' und ''export''ierte Variablen gehören besser in die ''.profile'', weil beides an die Kindprozesse vererbt wird. | ||
| + | |||
| + | Eine Ersetzung in der Form ''%%PATH="$PATH:$HOME/bin"%%'' würde z. B. mit jeder weiteren Subshell ausgeführt und jedes Mal neu evaluiert werden, so dass dieselbe Ergänzung jedes Mal wieder stattfindet. | ||
| + | |||
| + | === Beispiel Umgebungsvariable setzen === | ||
| + | |||
| + | <file bash ~/.profile> | ||
| + | |||
| + | … | ||
| + | |||
| + | VAR=wert | ||
| + | export VAR | ||
| + | </file> | ||
| + | |||
| + | Abmelden: Grafisch oder | ||
| + | loginctl list-sessions | ||
| + | loginctl terminate-session 5 | ||
| + | Wieder anmelden. | ||
| + | echo $VAR | ||
| + | | ||
| + | (Neustart ''gnome-terminal'' reicht nicht) | ||
| ===== Häufige Kommandofolgen abkürzen ===== | ===== Häufige Kommandofolgen abkürzen ===== | ||
| Zeile 15: | Zeile 51: | ||
| alias | alias | ||
| - | Dabeiinhalt ohne Kommentare ausgeben: | + | Dateiinhalt ohne Kommentare ausgeben: |
| + | alias ccat='grep -Ev "^\s*(#|$)"' | ||
| + | oder | ||
| <code bash> | <code bash> | ||
| function ccat { | function ccat { | ||
| - | egrep -v '^\s*(#|$)' $1 | + | grep -Ev '^\s*(#|$)' "$1" |
| } | } | ||
| </code> | </code> | ||
| Zeile 25: | Zeile 63: | ||
| <code bash> | <code bash> | ||
| function cgrep { | function cgrep { | ||
| - | egrep -v '^\s*(#|$)' $2 | grep --colour=auto $1 | + | grep -Ev '^\s*(#|$)' "$2" | grep --colour=auto "$1" |
| } | } | ||
| </code> | </code> | ||