Linux-Workshop

Shell Scripting im Admin-Alltag

14.02.2013
Von Thomas Steudten

Alias

Wenn man eine längere Befehlskette öfters eintippen möchte, lässt sich dies mit dem alias-Feature der Shell vereinfachen. Ein alias ist aber nur interaktiv gültig, das heißt in einem Skript ist die Funktion zu nutzen.

Folgendes Kommando zeigt die aktuell definierten Aliase:

> alias

Dieses Kommande definiert einen alias "myf":

> alias myf="find . -type f -size +1M -ls 2>/dev/null"

Aufruf des Alias:

> myf

794679 1784 -rw------- 1 root root 1822506 Oct 12 08:46 ./dist-upgrade/apt-term.log

Löscht den alias "myf" wieder:

> unalias myf

Eine erneute alias-Definition mit dem gleichen Namen überschreibt den ursprünglichen Inhalt. Findet die Shell auf der Promptzeile eine Übereinstimmung mit dem Namen einer Shell-Funktion und dem Namen eines Alias, so wird die Alias-Expansion ausgeführt. Im Unterschied zur Funktion, bei der wir Argumente beliebig platzieren können, ersetzt die Shell lediglich den Alias durch den dazugehörigen Text:

> type tom1

bash: type: tom1: not found

> tom1() { echo tom-func; md5sum $1; date; ls -l $2; }

> type tom1

tom1 is a function

tom1 ()

{

echo tom-func;

md5sum $1;

date;

ls -l $2

}

> tom1 /bin/date /etc/passwd

tom-func

fe7ae39c0adc727bad660350d24f5d68 /bin/date

Wed Dec 8 08:42:05 CET 2010

-rw-r--r-- 1 root root 2173 2010-10-01 13:52 /etc/passwd

> alias tom1="echo tom-alias; whoami"

> type tom1

tom1 is aliased to `echo tom-alias; whoami'

> tom1

tom-alias

thomas

> unalias tom1

> type tom1

tom1 is a function

[..]

Die Ersetzung des Alias auf der Promptzeile durch den dazugehörigen Text führt dazu, dass dieser Text ebenfalls in den dort neu definierten Funktionen und Aliase auftaucht, selbst wenn der Alias nicht mehr existiert:

> type ls

ls is hashed (/bin/ls)

> alias ls="ls --color"

> type ls

ls is aliased to `ls --color'

> type tom1

tom1 is a function

tom1 ()

{

echo tom-func;

md5sum $1;

date;

ls -l $2

}

> tom1() { echo tom-func; md5sum $1; date; ls -l $2; }

> unalias ls

> type tom1

tom1 is a function

tom1 ()

{

echo tom-func;

md5sum $1;

date;

ls --color -l $2 <= "--color": stammt aus der Alias Def. von ls

}