Prozessersetzung Eine Form der Kommunikation zwischen Prozessen, mit der die Eingabe oder Ausgabe eines Befehls als Datei angezeigt werden kann (z. B. `<(cmd)` oder `> (cmd)`).
Ich habe mich gefragt, wie ich das Folgende verstehen soll: Die Standardausgabe eines Befehls in die Standardausgabe eines anderen Befehls zu leiten, ist eine leistungsstarke Technik. Aber was ist, wenn Sie die Standardausgabe mehrerer Befehle weiterleiten müssen? Hier kommt die Prozesssubstitution ins Spiel. Mit anderen Worten, kann die Prozessersetzung das …
Ich versuche, Named Pipes im Kontext dieses speziellen Beispiels zu verstehen. Ich tippe <(ls -l)in meinem Terminal und erhalten die Ausgabe als, bash: /dev/fd/63: Permission denied. Wenn ich tippe cat <(ls -l), könnte ich den Verzeichnisinhalt sehen. Wenn ich die ersetzen catmit echo, ich glaube , ich die Terminalnamen bekommen …
Heute lerne ich etwas über FIFO mit diesem Artikel: Einführung in Named Pipes , der erwähnt cat <(ls -l). Ich habe ein paar Experimente mit gemacht sort < (ls -l), bei denen ein Fehler auftaucht: -bash: syntax error near unexpected token `('` Dann habe ich festgestellt, dass ich ein zusätzliches …
Gelegentlich funktioniert die Prozessersetzung nicht wie erwartet. Hier ist ein Beispiel: Eingang: gcc <(echo 'int main(){return 0;}') Ausgabe: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status Eingang: Aber es funktioniert wie erwartet, wenn es mit einem anderen Befehl verwendet wird: grep main <(echo 'int main(){return …
Einige Shells bashunterstützen beispielsweise Process Substitution, mit der die Prozessausgabe als Datei dargestellt werden kann: $ diff <(sort file1) <(sort file2) Dieses Konstrukt ist jedoch nicht POSIX und daher nicht portierbar. Wie kann eine POSIX- freundliche Prozesssubstitution erreicht werden (dh eine, die funktioniert /bin/sh) ? Anmerkung: die Frage ist nicht …
Ich möchte, dass meine Shell-Skripte immer dann fehlschlagen, wenn ein mit ihnen ausgeführter Befehl fehlschlägt. Normalerweise mache ich das mit: set -e set -o pipefail (normalerweise füge ich set -uauch hinzu) Die Sache ist, dass keines der oben genannten Verfahren mit Prozessersetzung funktioniert. Dieser Code gibt "ok" aus und beendet …
Diese Frage wurde von Stack Overflow migriert, da sie unter Unix und Linux Stack Exchange beantwortet werden kann. Vor 7 Jahren migriert . Ich erwartete cat <(cat)und sollte cat | catdasselbe tun: Zeilen von stdin nach stdout kopieren. Mein Verständnis war, dass beide a catin einer Subshell ausführen , die …
In bashkann ich Process Substitution verwenden und die Ausgabe eines Prozesses so behandeln, als wäre es eine auf der Festplatte gespeicherte Datei: $ echo <(ls) /dev/fd/63 $ ls -lAhF <(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825] Leider wird die Prozessersetzung in nicht unterstützt dash. Was …
Das echo one; echo two > >(cat); echo three; Befehl gibt eine unerwartete Ausgabe aus. Ich habe folgendes gelesen: Wie wird die Prozessersetzung in bash implementiert? und viele andere Artikel zum Thema Prozesssubstitution im Internet, verstehen aber nicht, warum es sich so verhält. Erwartete Ausgabe: one two three Wirkliche Leistung: …
Ich versuche, grep gegen eine Liste von ein paar hundert Dateien auszuführen: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Obwohl ich nach einer Zeichenfolge greife, von der ich weiß, dass sie in den Dateien enthalten ist, werden die Dateien nicht durchsucht: $ grep -i 'foo' <(cat files.txt) $ …
In Bash Version 4.2.47 (1) -Release, wenn ich versuche, formatierten Text, der aus einem HERE-Dokument stammt, wie folgt zu verketten: cat <(fmt --width=10 <<FOOBAR (I want the surrounding parentheses to be part of the HERE-document) (Even the preceding unbalanced parenthesis should be part of it. FOOBAR ) # I want …
Die folgende Zeile ist offensichtlich: echo "bla" | foo | bar Aber machen die folgenden dasselbe? echo "bla" | bar <(foo) echo "bla" | bar < <(foo) Welcher von den foound barlas "bla" von stdin und warum? Ich meine, dass ich es natürlich einfach codieren und überprüfen kann, aber ich …
Ich habe ein Skript, das Dateinamen in ein Array mit der folgenden Methode aus einem Q & A auf SO analysiert : unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done < <(find "$@" -type f -name '*.txt' -print0) Dies funktioniert hervorragend und verarbeitet alle Arten …
Ich habe nicht viel Erfahrung mit Tee, deshalb hoffe ich, dass dies nicht sehr einfach ist. Nachdem ich eine der Antworten auf diese Frage gesehen hatte, stieß ich auf ein seltsames Verhalten mit tee. Damit ich die erste Zeile und eine gefundene Zeile ausgeben kann, kann ich Folgendes verwenden: ps …
Ich habe die andere Frage recherchiert , als mir klar wurde, dass ich nicht verstehe, was unter der Haube passiert, was diese /dev/fd/*Dateien sind und warum untergeordnete Prozesse sie öffnen können.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.