Zum Inhalt springen

Bash/Prozesssubstitution: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


== Beschreibung ==
== Beschreibung ==
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.
In ''Liste'' genannter Kommandos in einer Subshell starten


Auf der Kommandozeile erscheint nach erfolgter Substitution der Name der erzeugten FIFO-Datei.
== Installation ==
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
 
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1-2" line>
<(Liste)
>(Liste)
</syntaxhighlight>


  '''ls <(echo "hello")'''
=== 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>
; 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
  /dev/fd/63
</syntaxhighlight>


Mit Hilfe der Prozesssubstitution könnte man den vi dazu bewegen, die Ausgaben eines Kommandos zu lesen:
; Beispiel
 
Mithilfe der Prozesssubstitution könnte man den vi dazu bewegen, die Ausgaben eines Kommandos zu lesen
'''vi <(ls /boot/vm*)'''
<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>


Ein weiteres Beispiel dient zur Bestandsaufnahme laufender Prozesse:
; 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
  <  2129 pts/0    S      0:00 /bin/bash
  <  2129 pts/0    S      0:00 /bin/bash
Zeile 31: Zeile 77:
  >  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:


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 88:
  > Images/GlobaleVariable.gif
  > Images/GlobaleVariable.gif
  > Images/LokaleVariable.gif
  > Images/LokaleVariable.gif
Innerhalb der Klammern >(...), <(...) können Parameter- Kommando- sowie arithmetische Substitutionen benutzt werden.
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>


=== Optionen ===
Innerhalb der Klammern
{| class="wikitable sortable options gnu big"
<syntaxhighlight lang="bash" highlight="1-2" line>
|-
>(...)
! 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>
</syntaxhighlight>
können Parameter- Kommando- sowie arithmetische Substitutionen benutzt werden


=== Problembehebung ===
=== Problembehebung ===
Zeile 108: Zeile 132:
==== Weblinks ====
==== Weblinks ====


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


</noinclude>
</noinclude>
[[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