Benutzer-Werkzeuge

Webseiten-Werkzeuge


bash

Bash

Umleiten der Ausgabe

stdout → Datei

programm > datei.txt

stderr → Datei

programm 2> datei.txt

stdout und stderr → Datei

programm &> datei.txt

Erweiterung von Dateiname entfernen

# name without extension
name=${filename%\.*}

Bulk-Rename

Um mehrere Dateien auf einmal umzubenennen (zum Beispiel ap2 in allen Dateien durch ap3 zu ersetzen):

for file in ap2* ; do mv $file `echo $file | sed 's/ap2/ap3/'`; done

Um die Umbenennung vorher gefahrlos zu testen, kann man ein echo einfügen:

for file in ap2* ; do echo mv $file `echo $file | sed 's/ap2/ap3/'`; done

Verzeichnis, aus dem Script gestartet wurde

DIR="$( cd "$( dirname "$0" )" && pwd )"

Gezieltes Blättern in der History

Um gezieltes Blättern oder Suchen in der History zu aktiveren, muss in /etc/inputrc

# search the history with arrow-up and arrow-down
"\e[A": history-search-backward
"\e[B": history-search-forward

eingefügt werden. Dann kann man den Anfang eines schon mal eingegebenen Befehls eingeben und mit Pfeil-Hoch und -Runter den gewünschten aussuchen.

Wenn dies nur für einen einzelnen Benutzer aktiviert werden soll, werden die Befehle in ~/.inputrc geschrieben. Um die Einstellungen aus /etc/inputrc trotzdem zu laden, muss die Datei ~/.inputrc mit $include /etc/inputrc beginnen.

Aliases

In der ~/.bash_aliases können Aliases für Befehle definiert werden um schneller auf sie zugreifen zu können.

Beispiel:

alias ls='ls --color=auto'

Mit type BEFEHL wird angezeigt, was sich hinter dem Alias BEFEHL verbirgt.

Beispiel:

$ type ls
ls is aliased to `ls --color=auto'

Um den Befehl ohne den Alias auszuführen, gibt es mehrere Möglichkeiten:

  • Backslash: \ls
  • command: command ls
  • Voller Pfad: /bin/ls
  • Anführungszeichen: "ls" oder 'ls'

Nützliche Aliases

alias diff='colordiff' #use colored diff
alias less='less -R' #make less work with colordiff
alias ls='ls --color=auto' #use colors for ls
alias ll='ls -al' #show long ls format

up-Funktion zum schnellen Verzeichniswechel:

# Go up directory tree X number of directories 
function up() { 
	COUNTER="$@";
	# default $COUNTER to 1 if it isn't already set 
	if [[ -z $COUNTER ]]; then 
		COUNTER=1 
	fi 
	# make sure $COUNTER is a number 
	if [ $COUNTER -eq $COUNTER 2> /dev/null ]; 
		then nwd=`pwd` # Set new working directory (nwd) to current directory 
		# Loop $nwd up directory tree one at a time 
		until [[ $COUNTER -lt 1 ]]; do 
			nwd=`dirname $nwd`
			let COUNTER-=1
		done 
		cd $nwd # change directories to the new working directory 
	else 
		# print usage and return error 
		echo "usage: up [NUMBER]" 
		return 1
        fi 
}

Farbige Ausgabe

Mit Escapesequenzen für das VT100-Terminal kann die Ausgabe eingefärbt werden. Wichtig ist dabei das -e, sonst werden Escapesequenzen nicht als solche ausgewertet.

red='\e[0;31m'
NC='\e[0m' # No Color
echo -e "${red}Hello${NC}"

Folgende Farbcodes können verwendet werden:

Farbe Code Farbe Code
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown/Orange 0;33 Yellow 1;33
Light Gray 0;37 White 1;37

weitere Informationen zu Kompatibilität, Blinken und mehr Farben

Debugging

Um Bash-Skripte zu debuggen, können sie mit -x aufgerufen werden:

bash -x ./script.sh

oder im Skript

set -x

gesetzt werden.

Für weitere Logging- und Debugmöglichkeiten siehe hier.

bash.txt · Zuletzt geändert: 2024/03/03 18:19 von olli