Bash/Prozesssubstitution: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 2: | Zeile 2: | ||
== Beschreibung == | == Beschreibung == | ||
Taucht ein Konstrukt der Art <(Liste) | Taucht ein Konstrukt der Art | ||
<syntaxhighlight lang="bash" highlight="1-2" line> | |||
<(Liste) | |||
>(Liste) | |||
</syntaxhighlight> | |||
auf, werden die durch Liste benannten Kommandos in einer Subshell gestartet. | |||
Gleichzeitig wird die Ausgabe (>(...)) bzw. Eingabe (<(...)) der Kommandos mit einer automatisch erzeugten FIFO-Datei verbunden. | |||
Auf der Kommandozeile erscheint nach erfolgter Substitution der Name der erzeugten FIFO-Datei. | Auf der Kommandozeile erscheint nach erfolgter Substitution der Name der erzeugten FIFO-Datei. | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
ls <(echo "hello") | |||
/dev/fd/63 | /dev/fd/63 | ||
</syntaxhighlight> | |||
Mithilfe der Prozesssubstitution könnte man den vi dazu bewegen, die Ausgaben eines Kommandos zu lesen | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
vi <(ls /boot/vm*) | |||
/boot/vmlinuz | /boot/vmlinuz | ||
/boot/vmlinuz.old | /boot/vmlinuz.old | ||
~ | ~ | ||
~ | ~ | ||
"/dev/fd/63" [fifo/socket] 2L, 32C | "/dev/fd/63" [fifo/socket] 2L, 32C | ||
1,1 All | 1,1 All | ||
</syntaxhighlight> | |||
; Bestandsaufnahme laufender Prozesse | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
'''diff <(ps ax) <(sleep 10; ps ax)''' | '''diff <(ps ax) <(sleep 10; ps ax)''' | ||
64d63 | 64d63 | ||
Zeile 31: | Zeile 40: | ||
> 2134 pts/1 S 0:00 top | > 2134 pts/1 S 0:00 top | ||
> 2135 pts/0 R 0:00 ps ax | > 2135 pts/0 R 0:00 ps ax | ||
</syntaxhighlight> | |||
Im Beispiel ist der Prozess top neu hinzugekommen, dass die Aufrufe der Kommandos ps und sleep erscheinen, war zu erwarten | Im Beispiel ist der Prozess top neu hinzugekommen, dass die Aufrufe der Kommandos ps und sleep erscheinen, war zu erwarten | ||
Und abschließend vergleichen wir die Inhalte zweier Archive | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
'''diff <(tar tzf Buch1.tar.gz) <(tar tzf Buch.tar.gz)''' | '''diff <(tar tzf Buch1.tar.gz) <(tar tzf Buch.tar.gz)''' | ||
325a326,328 | 325a326,328 | ||
Zeile 41: | Zeile 51: | ||
> Images/GlobaleVariable.gif | > Images/GlobaleVariable.gif | ||
> Images/LokaleVariable.gif | > Images/LokaleVariable.gif | ||
</syntaxhighlight> | |||
Innerhalb der Klammern | Innerhalb der Klammern | ||
<syntaxhighlight lang="bash" highlight="1-2" line> | |||
>(...) | |||
<syntaxhighlight lang="bash" highlight="1" line | <(...) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
können Parameter- Kommando- sowie arithmetische Substitutionen benutzt werden | |||
=== Optionen === | === Optionen === |
Version vom 11. Oktober 2025, 14:32 Uhr
Bash/Prozesssubstitution - Ein-/Ausgabe von Prozessen mit einer FIFO-Datei verbinden
Beschreibung
Taucht ein Konstrukt der Art
<(Liste)
>(Liste)
auf, werden die durch Liste benannten Kommandos in einer Subshell gestartet.
Gleichzeitig wird die Ausgabe (>(...)) bzw. Eingabe (<(...)) der Kommandos mit einer automatisch erzeugten FIFO-Datei verbunden.
Auf der Kommandozeile erscheint nach erfolgter Substitution der Name der erzeugten FIFO-Datei.
ls <(echo "hello")
/dev/fd/63
Mithilfe der Prozesssubstitution könnte man den vi dazu bewegen, die Ausgaben eines Kommandos zu lesen
vi <(ls /boot/vm*)
/boot/vmlinuz
/boot/vmlinuz.old
~
~
"/dev/fd/63" [fifo/socket] 2L, 32C
1,1 All
- Bestandsaufnahme laufender Prozesse
'''diff <(ps ax) <(sleep 10; ps ax)'''
64d63
< 2129 pts/0 S 0:00 /bin/bash
67,68c66
< 2132 pts/0 R 0:00 ps ax
< 2133 pts/0 S 0:00 sleep 10
---
> 2134 pts/1 S 0:00 top
> 2135 pts/0 R 0:00 ps ax
Im Beispiel ist der Prozess top neu hinzugekommen, dass die Aufrufe der Kommandos ps und sleep erscheinen, war zu erwarten
Und abschließend vergleichen wir die Inhalte zweier Archive
'''diff <(tar tzf Buch1.tar.gz) <(tar tzf Buch.tar.gz)'''
325a326,328
> Images/tkinfo.gif
> Images/GlobaleVariable.gif
> Images/LokaleVariable.gif
Innerhalb der Klammern
>(...)
<(...)
können Parameter- Kommando- sowie arithmetische Substitutionen benutzt werden
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
Wert | Beschreibung |
---|---|
0 | Erfolg |
>0 | Fehler |
Anwendung
Problembehebung
Konfiguration
Dateien
Datei | Beschreibung |
---|---|
Anhang
Siehe auch