Bash #
Positionale Parameter #
$0
: Gibt normalerweise den Namen des ausgeführten Programms zurück, kann aber auch auf einen anderen Wert gesetzt werden. Daher kein eigentlicher positionaler Parameter.$FUNCNAME
: Name der Funktion$1
-$9
: Argumentlisten-Elemente von 1 bis 9${10}
-${N}
: Argumentlisten-Elemente über 9$*
: Alle positionalen Parameter mit Ausnahme von$0
$@
: Alle positionalen Parameter mit Ausnahme von$0
$#
: Die Anzahl Argumente,$0
nicht mitgezählt
Datenströme #
Standard-Datenströme:
Datenstrom | Abkürzung | Beschreibung | Standardmässig verbunden mit |
---|---|---|---|
0 |
STDIN |
Standardeingabe | Tastatur |
1 |
STDOUT |
Standardausgabe | Monitor |
2 |
STDERR |
Standardfehlerausgabe | Monitor |
Daneben stehen noch weitere Datenströme, 3 bis 8, zur Verfügung.
Umleitung von Datenströmen #
Kommando | Beispiel | Bedeutung |
---|---|---|
< |
cat < testfile |
Standardeingabe wird umgestellt (im Beispiel auf die Datei testfile ) |
> oder 1> |
echo "Hello world!" > testfile |
Standardausgabe wird umgestellt (im Beispiel auf die Datei testfile ) [gleichbedeutend mit 1> ] |
>> |
echo "Hello world!" >> testfile |
Standardausgabe wird an Datei angehängt (im Beispiel auf testfile ) |
2> |
ls -l /dev/null/void 2> testfile |
Standardfehlerausgabe wird umgestellt (im Beispiel auf die Datei testfile ) |
&> |
ls $HOME /dev/null/void &> testfile |
Standardausgabe und Standardfehlerausgabe werden in gleiche Ausgabe umgeleitet (im Beispiel auf die Datei testfile ) |
>&1 |
ls -l /dev/null/void >&1 |
Strom wird auf Standardausgabe umgeleitet |
>&2 |
echo "Hello world!" >&2 |
Strom wird auf Standardfehlerausgabe umgeleitet |
exec 1> |
`exec 1> testfilev | Standardausgabe wird, bspw. in Skript oder in geöffneter, permanent umgestellt (im Beispiel auf die Datei testfile ) |
exec 0< |
exec 0< testfile |
Standardeingabe wird umgestellt (im Beispiel auf die Datei testfile ) |
exec 3<> |
exec 3<> testfile |
Für Datenstrom Ziel sowohl als Ein- wie Ausgabe definieren (im Beispiel Ziel testfile ) |
>&- |
exec 3>&- |
Datenstrom schliessen (im Beispiel für Datenstrom 3 ) |
tee |
date | tee testfile |
Standardeingabe wird gleichzeitig nach Standardausgabe und einer weiteren Ausgabe weitergeleitet (im Beispiel testfile ) |
Signale #
Signal | Wert | Tastaturkürzel | Beschreibung |
---|---|---|---|
1 |
`SIGHUP | Blockierung des Kontrollterminals oder Ende des Kontrollprozess | |
2 |
`SIGINT | Interrupt durch die Tastatur; interaktives Warnsignal | |
3 |
`SIGQUIT | Beenden durch die Tastatur | |
4 |
`SIGILL | Ungültige Anweisung | |
5 |
`SIGTRAP | Haltemarke erreicht | |
6 |
SIGABRT / SIGIOT |
Abnormale Beendigung | |
7 |
SIGBUS |
BUS Fehler (Speicherzugriffsfehler) | |
8 |
SIGFPE |
„Gleitkommaoperation Ausnahmefehler“: fehlerhafte arithmetische Operation. | |
9 |
SIGKILL |
Unblockierbares Beenden |
Stringmanipulation #
Für den Moment s. http://www.tldp.org/LDP/abs/html/string-manipulation.html
Bash-Einzeiler #
Verschlüsseltes tar-Archiv extrahieren #
gpg --decrypt einedatei.tar.gpg | tar xf -
Symmetrische Verschlüsselung eines archivierten Verzeichnisses #
tar cz mein_verzeichnis | gpg -co mein_archiv.tar.gpg
Pfad zur ausführbaren Datei eines Prozesses #
sudo readlink -f /proc/<pid>/exe
Rekursives Suchen und Ersetzen #
find -type f -exec sed -i 's/<alt>/<neu>/g' {} \;
Pipe zu mehreren Commands #
cat eine_datei | tee >(grep "ein_muster") >(grep "ein_weiteres_muster") >/dev/null | less
Mithilfe von tee
und Prozessersetzung kann das Ergebnis eines Befehls an verschiedene weitere Befehle gepipt werden. Da tee
standardmässig in Dateien (in diesem Beispiel sind das durch die Substitution die grep
-Befehle) und nach stdout
schreibt, muss hier Letzteres nach /dev/null
umgeleitet werden, da ansonsten sowohl das gesamte Ergebnis von cat
als auch die Ergebnisse der grep
-Befehle an den letzten Befehl weitergeleitet werden.
Zählen von abweichenden Zeilen in zwei Dateien #
diff -y --suppress-common-lines erste_datei zweite_datei | grep '^' | wc -l