Die Bash Variablen und Coding Hints
Ich kann mir auch nach all meinen Jahren mit Linux die zT sehr eigenwillige Syntax der Bash nicht merken. Deshalb diese kleine Hilfe:
Variable | Bedeutung |
---|---|
$1..$n | Positionsparameter. Ab 10 Parametern muss shift benutzt werden. Mit set setzbar. |
$# | Anzahl gesetzter Positionsparameter. |
$_ | Momentan gesetzte Shelloptionen. |
$? | Exit Status des letzten Vordergrundkommandos. |
$$ | Prozess Identifikationsnummer (PID) der aktuellen Shell. |
$! | PID des letzten Hintergrundkommandos. |
$* | Alle Positionsparameter als ein String. |
$@ | Alle Positionsparameter als einzelne Strings $1 $2 nacheinander. „$@“ ergibt „$1“ „$2“ nacheinander. |
Variable | |
---|---|
CDPATH | Suchverzeichnisse führ den Befehl cd |
HOME | Das Heimverzeichnis des Benutzers |
IFS | Input Field Seperator. Trennzeichen zwischen Eingaben. Voreingestellt auf Tab und Leer. |
LOGNAME | Loginname des Benutzers |
Mailboxdatei des Benutzers | |
MAILCHECK | Zeitperiode für die email-Prüfung. Voreingestellt auf 600 (Sek.). |
MAILPATH | Pfadnamen von Mailboxdateien. Mit : zu trennen. |
PATH | Suchdirectories für Programme. Voreinstellung ist /bin:/usr/bin |
PS1 | Primärprompt |
PS2 | Sekundärprompt |
SHACCT | Datei für die Abrechnungsinfo (Shell-Accounting) |
SHELL | Pfadname der Shell. |
TERM | Terminal des Benutzers |
TZ | Time Zone. Die Zeitzone des Benutzers. |
Bash-Loop
while test true ; do (chmod 744 index.html ; sleep 1 😉 done.
Ausdruck | Gibt 0 zurück, wenn… |
---|---|
[ -r $datei ] | …datei lesbar ist |
[ -w $datei ] | …datei schreibbar ist |
[ -x $datei ] | …datei ausführbar ist |
[ -f $datei ] | …datei eine normale Datei ist |
[ -d $datei ] | …datei ein Directory ist |
[ -c $datei ] | …datei ein Zeichengerät ist |
[ -b $datei ] | …datei ein Blockgerät ist |
[ -p $datei ] | …datei eine named pipe ist |
[ -u $datei ] | …die SUID der datei gesetzt ist |
[ -g $datei ] | …die SGID der datei gesetzt ist |
[ -k $datei ] | …das Sticky Bit der datei gesetzt ist |
[ -s $datei ] | …datei nicht leer ist |
Ausdruck | Gibt 0 zurück, wenn… |
[ -t $fd ] | …filedescriptor fd (zahl) einem terminal zugeordnet ist. fd ist 1 ohne fd. |
Ausdruck | Gibt 0 zurück, wenn… |
[ -z $str ] | …string str die laenge null hat |
[ -n $str ] | …string str die laenge ungleich null hat |
Ausdruck | Gibt 0 zurück, wenn… |
[ $str1=$str2 ] | …string str1 gleich str2 ist |
[ $str1!=$str2 ] | …string str1 ungleich str2 ist |
Ausdruck | Gibt 0 zurück, wenn… |
[ $i1 -eq $i2 ] | …zahl i1 gleich zahl i2 ist |
[ $i1 -ne $i2 ] | …zahl i1 gleich zahl i2 ist |
[ $i1 -gt $i2 ] | …zahl i1 größer zahl i2 ist |
[ $i1 -ge $i2 ] | …zahl i1 größer gleich zahl i2 ist |
[ $i1 -lt $i2 ] | …zahl i1 kleiner zahl i2 ist |
[ $i1 -le $i2 ] | …zahl i1 kleiner gleich zahl i2 ist |
Bash IF Abfrage
if [ „$#“ -lt „3“ ]; then
echo „Das Skript erwartet mindestens 3 Argumente“
exit 1
else
exit 0
fi
# Andere Schreibweise:
[ „$#“ -lt „3“ ] && { echo „Das Skript erwartet mindestens 3 Argumente“; exit 1; }
if [ $UDP -gt $MAX_HITS ]; then
#do something
fi
Bash FOR Schleifen
test -e /tmp/etc$$ || mkdir /tmp/etc$$
for i in `find /etc -type f -maxdepth 1`;
do
test -r $i || continue
cp $i /tmp/etc$$
bzip2 /tmp/etc$$/`basename $i`
done
Bash Case
case word in
pattern1) command;;
pattern2) command;;
esac
Bash while Schleife
while [ „$#“ -gt „0“ ]; do
case $1 in
-a) echo „Option a“
shift;;
-l) echo „Option l“
shift;;
-f) echo „Option f Argument ist $2“
shift 2;;
-F) echo „Option F“
shift;;
*) echo „Unerwartete Option“
# tue etwas…
;;
esac
done
Bash Until
until command
do
command
command
done
Bash Funktionen
function GetAbsolutePathName()
{
test -z „$1“ && exit
Pfad=${1%/*}
Datei=${1##*/}
echo `cd $Pfad 2>/dev/null && pwd || echo $Pfad`/$Datei
}
GetAbsolutePathName /home/benutzer
Bash übergebene Parameter parsen
while [ „$#“ -gt „0“ ]; do
case $1 in
smb) echo „smb“ shift;;
nmb) echo „nmb“ shift;;
*) echo „Unerwartete Option“ ;;
esac
done
Suchen und Ersetzen mit sed
sed ’s/ / /g‘ datei > /tmp/tmp.$$
cat /tmp/tmp.$$ > datei
rm /tmp/tmp.$$
Suchen und Ersetzen mit sed ohne temp file
cat text | sed -e s/\$var1/$var1/g -e s/\$var2/$var2/g -e
cat brief | sed -e s/voegeln/unterhaltung/g -e s/doris/betty/g -e
Suchen und Ersetzen mit perl
perl -pi -e „s/angela/doris/g;“ liebesbrief.txt
hier können auch wildcards verwendet werden um mehrere Dateien auf einmal zu ändern:
perl -pi -e „s/angela/doris/g;“ *.txt
Zeit ausgeben
echo $0 “ gestartet um “ $(date +%Y-%m-%d_%H:%M:%S)
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!