Eine Unix-Pipe verbindet Dateideskriptoren zweier Prozesse. Eine Pipe wird mit der in <unistd.h> deklarierten POSIX pipe () -Funktion erstellt. Shells ermöglichen die Erstellung von Rohren zwischen Prozessen mit "|".
Ich lese ein Buch, es heißt: Jedem Prozess stehen mindestens drei Kommunikationskanäle zur Verfügung: „Standardeingang“ (STDIN), „Standardeingang“ (STDOUT) und „Standardfehler“ (STDERR). Die meisten Befehle akzeptieren ihre Eingabe von STDIN und schreiben ihre Ausgabe in STDOUT. Sie schreiben Fehlermeldungen an STDERR. Mit dieser Konvention können Sie Befehle wie Bausteine aneinanderreihen, um …
Ich möchte Standardausgabe und Standardfehler bei der .xprofileVerwendung separat protokollieren logger. In Bash würde das ungefähr so aussehen: exec 1> >(logger --priority user.notice --tag $(basename $0)) \ 2> >(logger --priority user.error --tag $(basename $0)) Wie würde ich das auf POSIX- /bin/sh kompatible Weise tun ?
Ich möchte die folgende Bash-Funktion so schreiben, dass sie ihre Eingabe entweder von einem Argument oder einer Pipe akzeptiert: b64decode() { echo "$1" | base64 --decode; echo } Gewünschte Verwendung: $ b64decode "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" $ b64decode < file.txt $ b64decode <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" $ echo "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" | b64decode
Wenn Sie eines von beiden verwenden, erhalten Sie lesbaren Text. Aber nur mit der stderr-Umleitung kann man scrollen oder / somepattern eingeben und Übereinstimmungen erhalten. Ohne es gibt die Suche "Nichts zu suchen (drücken Sie die EINGABETASTE)" und eine Spalte mit ~. Zwar sind stderr und stdout nicht gleich, aber …
Allgemeines Problem Ich möchte ein Skript schreiben, das mit dem Benutzer interagiert, obwohl es sich mitten in einer Rohrkette befindet. Konkretes Beispiel Konkret dauert es ein fileoder stdin, zeigt Zeilen (mit Zeilennummern) an, fordert den Benutzer auf, eine Auswahl oder Zeilennummern einzugeben, und druckt dann die entsprechenden Zeilen aus stdout. …
Zum Beispiel habe ich von einem Befehl einige Zeilen bekommen $ some-command John Bob Lucy Jetzt möchte ich einen Verkettungsbefehl hinzufügen, der die Ausgabe ändert. $ some-command | other-command Hi John Bye Hi Bob Bye Hi Lucy Bye Wie schreibe ich other-command? (Ich bin ein Anfänger in Bash)
Ich habe drei Arten von Daten, die in verschiedenen Formaten vorliegen. Für jeden Datentyp gibt es ein Python-Skript, das ihn in ein einheitliches Format umwandelt. Dieses Python-Skript ist langsam und CPU-gebunden (an einen einzelnen Kern auf einem Multi-Core-Computer). Daher möchte ich drei Instanzen davon ausführen - eine für jeden Datentyp …
Ich habe ein Skript, das eine Datei 'Detail.out' erzeugt. Ich weiß, dass das Skript immer dann abgeschlossen ist, wenn die Datei eine bestimmte Anzahl von Zeilen enthält (ungefähr 21025). Ich sitze also an der Eingabeaufforderung und führe Folgendes aus: [me@somewhere myDir]$ wc -l */Detail.out 21025 A/Detail.out 21025 B/Detail.out 21025 C/Detail.out …
Betrachten Sie den folgenden Befehl : bash -c "echo x; cat 1" | tee 1. Mein Verständnis ist, dass es in eine neue Shell xverzweigen, in stdout schreiben, file 1 not foundin stderr schreiben , die Steuerung beenden und an den übergeordneten Prozess zurückgeben und xin stdout und in schreiben …
Ich versuche zu verstehen, wie der Ausgangsstatus kommuniziert wird, wenn eine Pipe verwendet wird. Angenommen, ich verwende which, um ein nicht vorhandenes Programm zu finden: which lss echo $? 1 Da ich whichnicht gefunden habe, habe lssich den Exit-Status 1 erhalten. Das ist in Ordnung. Wenn ich jedoch Folgendes versuche: …
Ich frage mich, ob Tee die Pipelines verlangsamt. Das Schreiben von Daten auf die Festplatte ist schließlich langsamer als das Weiterleiten. Wartet tee mit dem Senden von Daten an die nächste Pipe, bis sie auf die Festplatte geschrieben wurden? (Wenn nicht, muss tee wohl Daten in die Warteschlange stellen, die …
Gibt es eine Möglichkeit, einen Befehl erst auszuführen, nachdem ein anderer ohne temporäre Datei ausgeführt wurde? Ich habe einen länger laufenden Befehl und einen anderen Befehl, der die Ausgabe formatiert und sie mit curl an einen HTTP-Server sendet. Wenn ich nur ausführen commandA | commandB, commandBwird starten curl, eine Verbindung …
Angenommen, ich habe das folgende Skript: #!/bin/bash for i in $(seq 1000) do cp /etc/passwd tmp cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line cat tmp done In der Schlüsselzeile lese und schreibe ich dieselbe Datei, tmpdie manchmal fehlschlägt. (Ich …
Geschlossen . Diese Frage erfordert Details oder Klarheit . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Fügen Sie Details hinzu und klären Sie das Problem, indem Sie diesen Beitrag bearbeiten . Geschlossen vor 2 Jahren . Aufgrund der Art und Weise, wie mein Hoster Dinge tut, muss …
Nehmen wir an, ich habe eine Datei confirmation.shmit dem folgenden Inhalt: #!/bin/bash echo -n "Are you sure [Y/n]? " read line case "$line" in n|N) echo "smth" ;; y|Y) echo "smth" ;; esac und ich möchte dieses Skript folgendermaßen ausführen: cat confirmation.sh | sh Ich sehe Are you sure [Y/n]?und …
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.