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:

VariableBedeutung
$1..$nPositionsparameter. 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
CDPATHSuchverzeichnisse führ den Befehl cd
HOMEDas Heimverzeichnis des Benutzers
IFSInput Field Seperator. Trennzeichen zwischen Eingaben. Voreingestellt auf Tab und Leer.
LOGNAMELoginname des Benutzers
MAILMailboxdatei des Benutzers
MAILCHECKZeitperiode für die email-Prüfung. Voreingestellt auf 600 (Sek.).
MAILPATHPfadnamen von Mailboxdateien. Mit : zu trennen.
PATHSuchdirectories für Programme. Voreinstellung ist /bin:/usr/bin
PS1Primärprompt
PS2Sekundärprompt
SHACCTDatei für die Abrechnungsinfo (Shell-Accounting)
SHELLPfadname der Shell.
TERMTerminal des Benutzers
TZTime Zone. Die Zeitzone des Benutzers.

Bash-Loop

while test true ; do (chmod 744 index.html ; sleep 1 😉 done.

AusdruckGibt 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
AusdruckGibt 0 zurück, wenn…
[ -t $fd ]…filedescriptor fd (zahl) einem terminal zugeordnet ist. fd ist 1 ohne fd.
AusdruckGibt 0 zurück, wenn…
[ -z $str ]…string str die laenge null hat
[ -n $str ]…string str die laenge ungleich null hat
AusdruckGibt 0 zurück, wenn…
[ $str1=$str2 ]…string str1 gleich str2 ist
[ $str1!=$str2 ]…string str1 ungleich str2 ist
AusdruckGibt 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)

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert