Zum Inhalt springen

Bash/Prozesssubstitution: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''{{BASEPAGENAME}}''' - Beschreibung
'''Bash/Prozesssubstitution''' - Ein-/Ausgabe von Prozessen mit einer FIFO-Datei verbinden


== Beschreibung ==
== Beschreibung ==
In ''Liste'' genannter Kommandos in einer Subshell starten


== Installation ==
== Installation ==
Zeile 8: Zeile 9:


== Aufruf ==
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1-2" line>
<(Liste)
>(Liste)
</syntaxhighlight>
</syntaxhighlight>


Zeile 35: Zeile 38:
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
; Ein-/Ausgabe
Audgabe
(>(...))
Eingabe
(<(...))
der Kommandos mit einer automatisch erzeugten FIFO-Datei verbunden
; 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
</syntaxhighlight>
; Beispiel
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.old
~
 
~
"/dev/fd/63" [fifo/socket] 2L, 32C
                                        1,1            All
</syntaxhighlight>
; Bestandsaufnahme laufender Prozesse
<syntaxhighlight lang="bash" highlight="1" line copy>
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
</syntaxhighlight>
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)'''
325a326,328
> Images/tkinfo.gif
> Images/GlobaleVariable.gif
> Images/LokaleVariable.gif
</syntaxhighlight>
Innerhalb der Klammern
<syntaxhighlight lang="bash" highlight="1-2" line>
>(...)
<(...)
</syntaxhighlight>
können Parameter- Kommando- sowie arithmetische Substitutionen benutzt werden


=== Problembehebung ===
=== Problembehebung ===
Zeile 60: Zeile 121:


=== Dokumentation ===
=== Dokumentation ===
<!--
; Man-Page  
; Man-Page  
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]


<!--
; Info-Pages  
; Info-Pages  
-->
-->
Zeile 71: Zeile 132:
==== Weblinks ====
==== Weblinks ====


{{DEFAULTSORT:new}}
[[Kategorie:Bash/Expansionen]]
{{DISPLAYTITLE:new}}
 
[[Kategorie:new]]


</noinclude>
</noinclude>
= TMP =
Die Ein- bzw. Ausgabe von Prozessen kann mittels der Prozesssubstitution mit einer FIFO-Datei verbunden werden.
Taucht ein Konstrukt der Art <(Liste) bzw. >(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
Mit Hilfe 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
Ein weiteres Beispiel dient zur 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.
[[Kategorie:Bash/Expansionen]]

Aktuelle Version vom 13. Oktober 2025, 09:50 Uhr

Bash/Prozesssubstitution - Ein-/Ausgabe von Prozessen mit einer FIFO-Datei verbinden

Beschreibung

In Liste genannter Kommandos in einer Subshell starten

Installation

Aufruf

<(Liste)
>(Liste)

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung

Ein-/Ausgabe

Audgabe

(>(...))

Eingabe

(<(...))

der Kommandos mit einer automatisch erzeugten FIFO-Datei verbunden

FIFO-Datei

Auf der Kommandozeile erscheint nach erfolgter Substitution der Name der erzeugten FIFO-Datei

ls <(echo "hello")
 /dev/fd/63
Beispiel

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

Problembehebung

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



Dokumentation

Links

Projekt

Weblinks