====== bash ====== Die **bash** ist eine [[Shell]]. ===== Beispiele ===== ==== Dateien nach Größe sortiert, ausgenommen Verzeichnisse ==== ls -ltraSh | grep -v ^d insgesamt 7,1G ==== Dateien nach bestimmtem Muster erzeugen ==== for i in {1..20}; do touch $i; done ==== Dateien die zuletzt erzeugt wurden behalten, alte Löschen ==== ls -A1t | tail -n +3 | xargs rm ls -tr | head -n -3 | xargs rm ==== Alle Dateien in einem Ordner auflisten ==== for entry in "$search_dir"./*; do echo $entry; done ==== Alle Verzeichnise in einem Ordner auflisten ==== Mit [[sed]], Bsp. im aktuellen Verzeichnis for i in $(find ./ -type d | sed -e 's#./##'); do echo $i; done ==== Falls Datei existiert, tue dies... ==== if [ -e /home/me/datei ]; then rm /home/me/datei; fi 2>&1 Mit Wildcard: if ls /home/me/dateien*; then rm /home/me/dateien* 1> /dev/null 2>&1; fi 2>&1 ==== Vorkommen zählen ==== Von Dateien wie z.B. a-001.jpg nach urlaub-2000-09-01-001.jpg cat /var/log/nginx/access.log | grep -i xovibot | wc -l //Siehe auch [[Zeilen einer Datei zählen und nach Häufigkeit sortieren]].// ==== Dateien umbenennen ==== for i in a-0* ; do mv $i urlaub-2000-09-01-${i#a-}; done //Siehe auch [[pyrenamer]].// ==== Rechnen ==== expr 1 + 1 expr 2 - 1 expr 4 \* 2 expr 4 / 2 ==== Inhalt einer Datei in Variable schreiben ==== > value=`cat file.txt` ==== Bash und JSON ==== //Siehe [[jq]].// ==== Programmausgabe umleiten ==== stdout in Datei umleiten test.sh > Datei.txt stderr in Datei umleiten test.sh 2> Datei.txt stdout und stderr in Datei umleiten test.sh &> Datei.txt stdout und stderr jeweils in eigene Datei umleiten test.sh > Datei_stdout.txt 2> Datei_stderr.txt stdout in stderr umleiten test.sh 1>&2 stderr in stdout umleiten test.sh 2>&1 ==== brace expansion ==== Listen mit Komma getrennt echo {I,like,bash,programming} Ausgabe: > I like bash programming Weiteres Beispiel: echo {I,like}{bash,programming} Ausgabe: > Ibash Iprogramming likebash likeprogramming Bereiche echo {50..60} Ausgabe: > 50 51 52 53 54 55 56 57 58 59 60 Weiteres Beispiel: echo {A..C}{1..3} Ausgabe: > A1 A2 A3 B1 B2 B3 C1 C2 C3 Preamble echo b{all,ell,oat,eef} Ausgabe: > ball bell boat beef Postscript: echo {John,Mohammed,Lisa}" is a programmer." Ausgabe: > John is a programmer. Mohammed is a programmer. Lisa is a programmer. ===== Tips ===== ==== Autovervollständigung ==== Installieren des Paketes bash-completition: > apt install bash-completition Danach aus- und einloggen. Falls es nicht funktioniert muss in die ~/.bashrc einkommentiert oder eingetragen sein: if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi ===== Siehe auch ===== * [[scripte:bashrc|bashrc (root)]] * [[scripte:bashrc_move|bashrc (user)]] * [[powerline]] * [[liquidprompt]] * [[figlet]] * [[Kommandozeile]] ===== Weblinks ===== * https://tiswww.case.edu/php/chet/bash/bashtop.html * [[https://www.shellcheck.net/|ShellCheck]] – Finds bugs in your shell scripts. **Tutorials** * http://tldp.org/LDP/Bash-Beginners-Guide/html/ **Prompts** * https://github.com/milkbikis/powerline-shell * https://github.com/riobard/bash-powerline **Einstellungen** * [[https://github.com/mrzool/bash-sensible|Sensible Bash]]