Zum Inhalt springen

Linux/Bash/Aliase und Funktionen: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
* 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: # alias tx="tar -xvzf".
 
* Jetzt kann ein Tarball einfach mit dem Kommando tx <archivname.tgz> extrahiert
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.
Zeile 15: Zeile 20:
Hier ein Beispiel:
Hier ein Beispiel:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
  user@tom:~$ alias frei="free; df"
  user@tom:~$ alias frei="free; df"
  user@tom:~$ frei
  user@tom:~$ frei
Zeile 30: 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.
Zeile 40: Zeile 45:
Der Aufbau einer Funktion sieht immer so aus:
Der Aufbau einer Funktion sieht immer so aus:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
  function Funktionsname()
  function Funktionsname()
  {
  {
Zeile 48: 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.
Zeile 54: Zeile 60:
Das Beispiel demonstriert, dass es mit einer Funktion sogar möglich ist, Rechenoperationen auszuführen:
Das Beispiel demonstriert, dass es mit einer Funktion sogar möglich ist, Rechenoperationen auszuführen:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
  archangel:/ # function addiere ()
  archangel:/ # function addiere ()
  > {
  > {
Zeile 62: 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.
Zeile 67: Zeile 73:
* 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:
Es ist auch möglich, eine Funktion in einer einzigen Zeile zu erstellen:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
archangel:/ # function addiere { let summe=$1+$2; echo "Die Summe ist $summe"; }
</syntaxhighlight>
</syntaxhighlight>
archangel:/ # function addiere { let summe=$1+$2; echo "Die Summe ist $summe"; }


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:
 
archangel:/ # addiere () { let summe=$1+$2; echo "Die Summe ist $summe"; }
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
Sie wird übrigens Ihren Computer zum Absturz bringen, wenn Sie den Befehl abtippen
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
archangel:/ # :(){ :|:& };:
</syntaxhighlight>
</syntaxhighlight>
archangel:/ # :(){ :|:& };:


== Installation ==
== Installation ==

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