Linux/Bash/Aliase und Funktionen: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „=Aliase und Funktionen= Wenn Sie Befehle in Kombination mit bestimmten Parametern immer wieder verwenden, ist es empfehlenswert, einen Alias zu definieren. * Das ist auch hilfreich, wenn ein Befehl in sich sehr lang ist. * Ein Beispiel: Wenn man oft Tarballs aus dem Internet herunterladen und entpacken muss, benötigt man immer wieder das Kommando tar -xvzf <archivname.tgz>. * Es wäre doch viel einfacher, nur ein einziges oder zumindest wenige Zeichen hi…“ |
|||
| (15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=Aliase und Funktionen= | '''{{BASEPAGENAME}}''' - Beschreibung | ||
== Beschreibung == | |||
=== Aliase und Funktionen === | |||
Wenn Sie Befehle in Kombination mit bestimmten Parametern immer wieder verwenden, ist es empfehlenswert, einen Alias zu definieren. | Wenn Sie Befehle in Kombination mit bestimmten Parametern immer wieder verwenden, ist es empfehlenswert, einen Alias zu definieren. | ||
* Das ist auch hilfreich, wenn ein Befehl in sich sehr lang ist. | * Das ist auch hilfreich, wenn ein Befehl in sich sehr lang ist. | ||
* Ein Beispiel: Wenn man oft Tarballs aus dem Internet herunterladen und entpacken muss, benötigt man immer wieder das Kommando tar -xvzf <archivname.tgz>. | * Ein Beispiel: Wenn man oft Tarballs aus dem Internet herunterladen und entpacken muss, benötigt man immer wieder das Kommando tar -xvzf <archivname.tgz>. | ||
* Es wäre doch viel einfacher, nur ein einziges oder zumindest wenige Zeichen hierfür zu verwenden. | * Es wäre doch viel einfacher, nur ein einziges oder zumindest wenige Zeichen hierfür zu verwenden. | ||
Es lohnt sich also, einen Alias anzulegen: | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
alias tx="tar -xvzf" . | |||
</syntaxhighlight> | |||
Jetzt kann ein Tarball einfach mit dem Kommando tx <archivname.tgz> extrahiert | |||
und ausgepackt werden. | und ausgepackt werden. | ||
* Es ist auch möglich, mehrere Kommandos in einem einzigen Alias zu kombinieren. | * Es ist auch möglich, mehrere Kommandos in einem einzigen Alias zu kombinieren. | ||
* In einem solchen Fall müssen diese Kommandos durch Semikolons voneinander getrennt werden | * In einem solchen Fall müssen diese Kommandos durch Semikolons voneinander getrennt werden | ||
Hier ein Beispiel: | Hier ein Beispiel: | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
user@tom:~$ alias frei="free; df" | user@tom:~$ alias frei="free; df" | ||
user@tom:~$ frei | user@tom:~$ frei | ||
| Zeile 24: | Zeile 34: | ||
tmpfs 387088 0 387088 0% /run/user/113 | tmpfs 387088 0 387088 0% /run/user/113 | ||
tmpfs 387088 12 387076 1% /run/user/1000 | tmpfs 387088 12 387076 1% /run/user/1000 | ||
</syntaxhighlight> | |||
Auf diese Art wird mit einem einzigen Befehl die Festplatten- und Speicherbelegung überprüft. | Auf diese Art wird mit einem einzigen Befehl die Festplatten- und Speicherbelegung überprüft. | ||
* Die Definition der Aliase geht bei einer Neuanmeldung am System verloren | * Die Definition der Aliase geht bei einer Neuanmeldung am System verloren | ||
Funktionen Eine der unangenehmsten Einschränkungen, die ein Alias mit sich bringt, ist die Tatsache, dass Übergabewerte ($1, $2 | Funktionen Eine der unangenehmsten Einschränkungen, die ein Alias mit sich bringt, ist die Tatsache, dass Übergabewerte ($1, $2 und weitere) nur einmal ausgewertet werden können. | ||
* Bei einer Funktion gibt es diese Einschränkung nicht. | * Bei einer Funktion gibt es diese Einschränkung nicht. | ||
* Der Begriff Funktion entstammt der Programmierung, und eigentlich handelt es sich um ein Unterprogramm, das man für wiederkehrende Aufgaben verwenden kann. | * Der Begriff Funktion entstammt der Programmierung, und eigentlich handelt es sich um ein Unterprogramm, das man für wiederkehrende Aufgaben verwenden kann. | ||
* Eine Funktion in einer Shell kann sowohl von einem Benutzer als auch von einem Skript aufgerufen werden. | * Eine Funktion in einer Shell kann sowohl von einem Benutzer als auch von einem Skript aufgerufen werden. | ||
Der Aufbau einer Funktion sieht immer so aus: | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
function Funktionsname() | function Funktionsname() | ||
{ | { | ||
| Zeile 38: | Zeile 52: | ||
Befehl n | Befehl n | ||
} | } | ||
</syntaxhighlight> | |||
Der Befehl function kann auch einfach weggelassen werden, weil die Bash an den beiden Klammern erkennt, dass es sich um eine Funktion handelt. | Der Befehl function kann auch einfach weggelassen werden, weil die Bash an den beiden Klammern erkennt, dass es sich um eine Funktion handelt. | ||
* Wenn Sie den Befehl function dennoch verwenden, können Sie alternativ die Klammern direkt hinter dem Namen der Funktion weglassen. | * Wenn Sie den Befehl function dennoch verwenden, können Sie alternativ die Klammern direkt hinter dem Namen der Funktion weglassen. | ||
* Es soll hier aber im Folgenden die korrekte Syntax angewandt werden. | * Es soll hier aber im Folgenden die korrekte Syntax angewandt werden. | ||
Das Beispiel demonstriert, dass es mit einer Funktion sogar möglich ist, Rechenoperationen auszuführen: | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
archangel:/ # function addiere () | archangel:/ # function addiere () | ||
> { | > { | ||
| Zeile 49: | Zeile 67: | ||
archangel:/ # addiere 3 4 | archangel:/ # addiere 3 4 | ||
Die Summe ist 7 | Die Summe ist 7 | ||
</syntaxhighlight> | |||
Es wurde eine Funktion namens addiere erstellt. | Es wurde eine Funktion namens addiere erstellt. | ||
* Die geschweiften Klammern sorgen dafür, dass diese mehrzeilige Anweisung als ein einziger Befehl interpretiert wird. | * Die geschweiften Klammern sorgen dafür, dass diese mehrzeilige Anweisung als ein einziger Befehl interpretiert wird. | ||
* Die Zeile let summe=$1+$2 sorgt dafür, dass der Variablen summe die Summe aus den beiden Übergabevariablen $1 und $2 übergeben wird. | * Die Zeile let summe=$1+$2 sorgt dafür, dass der Variablen summe die Summe aus den beiden Übergabevariablen $1 und $2 übergeben wird. | ||
* In der nächsten Zeile erfolgt die Ausgabe. | * In der nächsten Zeile erfolgt die Ausgabe. | ||
Es ist auch möglich, eine Funktion in einer einzigen Zeile zu erstellen: | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
archangel:/ # function addiere { let summe=$1+$2; echo "Die Summe ist $summe"; } | |||
</syntaxhighlight> | |||
Diese Methode wird jedoch von den meisten Benutzern als unübersichtlich empfunden. | Diese Methode wird jedoch von den meisten Benutzern als unübersichtlich empfunden. | ||
* Die beiden Leerzeichen innerhalb der geschweiften Klammern sind übrigens notwendig und dienen nicht nur der Übersichtlichkeit. | * Die beiden Leerzeichen innerhalb der geschweiften Klammern sind übrigens notwendig und dienen nicht nur der Übersichtlichkeit. | ||
* Es gibt eine alternative Syntax, um eine Funktion zu erstellen. | * Es gibt eine alternative Syntax, um eine Funktion zu erstellen. | ||
Die folgende Kommandozeile hat dasselbe Ergebnis zur Folge wie die vorangegangene: | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
archangel:/ # addiere () { let summe=$1+$2; echo "Die Summe ist $summe"; } | |||
</syntaxhighlight> | |||
Da hier das Schlüsselwort function noch nicht einmal auftaucht, ist für einen Einsteiger kaum noch zu erkennen, um was es sich hier eigentlich handelt. | Da hier das Schlüsselwort function noch nicht einmal auftaucht, ist für einen Einsteiger kaum noch zu erkennen, um was es sich hier eigentlich handelt. | ||
* Der folgende Befehl enthält eine so genannte forkbomb, die auf einer Funktion basiert. | * Der folgende Befehl enthält eine so genannte forkbomb, die auf einer Funktion basiert. | ||
* Versuchen Sie doch einmal zu verstehen, wie diese funktioniert. | * Versuchen Sie doch einmal zu verstehen, wie diese funktioniert. | ||
== | Sie wird übrigens Ihren Computer zum Absturz bringen, wenn Sie den Befehl abtippen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
archangel:/ # :(){ :|:& };: | |||
</syntaxhighlight> | |||
== Installation == | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
</syntaxhighlight> | |||
== Aufruf == | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
</syntaxhighlight> | |||
=== Optionen === | |||
{| class="wikitable sortable options gnu big" | |||
|- | |||
! Unix !! GNU !! Parameter !! Beschreibung | |||
|- | |||
| || || || | |||
|- | |||
|} | |||
=== Parameter === | |||
=== Umgebungsvariablen === | |||
=== Exit-Status === | |||
{| class="wikitable options col1center big" | |||
|- | |||
! Wert !! Beschreibung | |||
|- | |||
| 0 || Erfolg | |||
|- | |||
| >0 || Fehler | |||
|} | |||
== Anwendung == | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
</syntaxhighlight> | |||
<!-- output --> | |||
<syntaxhighlight lang="bash" highlight="" line> | |||
</syntaxhighlight> | |||
=== Problembehebung === | |||
== Konfiguration == | |||
=== Dateien === | |||
{| class="wikitable options big" | |||
|- | |||
! Datei !! Beschreibung | |||
|- | |||
| || | |||
|- | |||
| || | |||
|} | |||
<noinclude> | |||
== | == Anhang == | ||
=== Siehe auch === | |||
<div style="column-count:2"> | |||
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree> | |||
</div> | |||
---- | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}/}} | |||
== | === Dokumentation === | ||
<!-- | |||
; Man-Page | |||
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)] | |||
== | ; Info-Pages | ||
--> | |||
=== Links === | |||
==== Projekt ==== | |||
==== Weblinks ==== | |||
<!-- | |||
{{DEFAULTSORT:new}} | |||
{{DISPLAYTITLE:new}} | |||
--> | |||
[[Kategorie:Bash/Scripting]] | [[Kategorie:Bash/Scripting]] | ||
</noinclude> | |||
Aktuelle Version vom 31. Januar 2026, 19:24 Uhr
Linux/Bash/Aliase und Funktionen - Beschreibung
Beschreibung
Aliase und Funktionen
Wenn Sie Befehle in Kombination mit bestimmten Parametern immer wieder verwenden, ist es empfehlenswert, einen Alias zu definieren.
- Das ist auch hilfreich, wenn ein Befehl in sich sehr lang ist.
- Ein Beispiel: Wenn man oft Tarballs aus dem Internet herunterladen und entpacken muss, benötigt man immer wieder das Kommando tar -xvzf <archivname.tgz>.
- Es wäre doch viel einfacher, nur ein einziges oder zumindest wenige Zeichen hierfür zu verwenden.
Es lohnt sich also, einen Alias anzulegen:
alias tx="tar -xvzf" .
Jetzt kann ein Tarball einfach mit dem Kommando tx <archivname.tgz> extrahiert und ausgepackt werden.
- Es ist auch möglich, mehrere Kommandos in einem einzigen Alias zu kombinieren.
- In einem solchen Fall müssen diese Kommandos durch Semikolons voneinander getrennt werden
Hier ein Beispiel:
user@tom:~$ alias frei="free; df"
user@tom:~$ frei
total used free shared buff/cache available
Mem: 3870884 1001952 1608764 124880 1260168 2512240
Swap: 7811068 0 7811068
Dateisystem 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf
udev 1924160 0 1924160 0% /dev
tmpfs 387092 5896 381196 2% /run
/dev/sda2 38186548 7072220 29144820 20% /
tmpfs 1935440 11096 1924344 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1935440 0 1935440 0% /sys/fs/cgroup
tmpfs 387088 0 387088 0% /run/user/113
tmpfs 387088 12 387076 1% /run/user/1000
Auf diese Art wird mit einem einzigen Befehl die Festplatten- und Speicherbelegung überprüft.
- Die Definition der Aliase geht bei einer Neuanmeldung am System verloren
Funktionen Eine der unangenehmsten Einschränkungen, die ein Alias mit sich bringt, ist die Tatsache, dass Übergabewerte ($1, $2 und weitere) nur einmal ausgewertet werden können.
- Bei einer Funktion gibt es diese Einschränkung nicht.
- Der Begriff Funktion entstammt der Programmierung, und eigentlich handelt es sich um ein Unterprogramm, das man für wiederkehrende Aufgaben verwenden kann.
- Eine Funktion in einer Shell kann sowohl von einem Benutzer als auch von einem Skript aufgerufen werden.
Der Aufbau einer Funktion sieht immer so aus:
function Funktionsname()
{
Befehl 1
Befehl 2
Befehl n
}
Der Befehl function kann auch einfach weggelassen werden, weil die Bash an den beiden Klammern erkennt, dass es sich um eine Funktion handelt.
- Wenn Sie den Befehl function dennoch verwenden, können Sie alternativ die Klammern direkt hinter dem Namen der Funktion weglassen.
- Es soll hier aber im Folgenden die korrekte Syntax angewandt werden.
Das Beispiel demonstriert, dass es mit einer Funktion sogar möglich ist, Rechenoperationen auszuführen:
archangel:/ # function addiere ()
> {
> let summe=$1+$2
> echo -e "Die Summe ist $summe"
> }
archangel:/ # addiere 3 4
Die Summe ist 7
Es wurde eine Funktion namens addiere erstellt.
- Die geschweiften Klammern sorgen dafür, dass diese mehrzeilige Anweisung als ein einziger Befehl interpretiert wird.
- Die Zeile let summe=$1+$2 sorgt dafür, dass der Variablen summe die Summe aus den beiden Übergabevariablen $1 und $2 übergeben wird.
- In der nächsten Zeile erfolgt die Ausgabe.
Es ist auch möglich, eine Funktion in einer einzigen Zeile zu erstellen:
archangel:/ # function addiere { let summe=$1+$2; echo "Die Summe ist $summe"; }
Diese Methode wird jedoch von den meisten Benutzern als unübersichtlich empfunden.
- Die beiden Leerzeichen innerhalb der geschweiften Klammern sind übrigens notwendig und dienen nicht nur der Übersichtlichkeit.
- Es gibt eine alternative Syntax, um eine Funktion zu erstellen.
Die folgende Kommandozeile hat dasselbe Ergebnis zur Folge wie die vorangegangene:
archangel:/ # addiere () { let summe=$1+$2; echo "Die Summe ist $summe"; }
Da hier das Schlüsselwort function noch nicht einmal auftaucht, ist für einen Einsteiger kaum noch zu erkennen, um was es sich hier eigentlich handelt.
- Der folgende Befehl enthält eine so genannte forkbomb, die auf einer Funktion basiert.
- Versuchen Sie doch einmal zu verstehen, wie diese funktioniert.
Sie wird übrigens Ihren Computer zum Absturz bringen, wenn Sie den Befehl abtippen
archangel:/ # :(){ :|:& };:
Installation
Aufruf
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
| Wert | Beschreibung |
|---|---|
| 0 | Erfolg |
| >0 | Fehler |
Anwendung
Problembehebung
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks