Ich musste ein Shasum extrahieren. Das funktioniert, aber kann jemand erklären, warum?
sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Ich bin mit dem bekannten $( )
Konstrukt, aber nicht finden kann docs für <( )
, gekoppelt mit -<
, die ich davon ausgehen , auf die wird Umleitung sed
STDIN.
Ich weiß, dass es einfachere Wege gibt, aber dieses Konstrukt entzieht sich mir.
openssl ... | sed '...'
Das
<( COMMAND )
Bash-Konstrukt wird als Prozesssubstitution bezeichnet .Es wertet das
COMMAND
Innere aus und leitet seine Ausgabe an ein FIFO um, eine Named Pipe, der ein virtueller Dateideskriptor/dev/fd
zugewiesen wird. Es verhält sich wie eine temporäre Datei, die die Ausgabe des ausgewerteten Befehls enthält.Das
<
Bash-Konstrukt wird als Eingabeumleitung bezeichnet .Es nimmt einen Dateideskriptor auf der rechten Seite und leitet seinen Inhalt an die STDIN (Standardeingabe) des Befehls auf der linken Seite weiter.
Das
-
ist kein Bash-Konstrukt, sondern ein Argument dafürsed
, das seine Eingabedatei angibt. Der spezielle Wert-
bedeutet, aus STDIN zu lesen (dies ist auchsed
die Standardeinstellung, sodass es weggelassen werden kann).Diese Zeile wird zuerst ausgeführt
openssl dgst -sha256 filename
und speichert ihre Ausgabe in einem FIFO zwischen. Der Dateideskriptor, der diese Named Pipe darstellt, wird als Eingabedatei behandelt, die an die STDIN von umgeleitet wirdsed 's/^.*= //' -
. Diesersed
Befehl liest aus STDIN und entfernt jedes Zeichen vor einem "=" - Symbol, gefolgt von einem Leerzeichen.quelle