Musiałem wydobyć szasum. To działa, ale czy ktoś może wyjaśnić, dlaczego?
sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Znam ten $( )
konstrukt, ale nie mogę znaleźć dokumentów <( )
, w połączeniu z -<
którymi, jak zakładam, przekierowuję na sed
STDIN.
Wiem, że są łatwiejsze sposoby, ale ten konstrukt mi umyka.
openssl ... | sed '...'
Konstrukcja
<( COMMAND )
Bash nazywa się podstawieniem procesu .Ocenia
COMMAND
wnętrze i przekierowuje dane wyjściowe do FIFO, nazwanego potoku,/dev/fd
któremu przypisany jest wirtualny deskryptor pliku . Działa jak plik tymczasowy zawierający dane wyjściowe ocenianego polecenia.Konstrukcja
<
Bash nazywa się przekierowaniem wejściowym .Pobiera deskryptor pliku po prawej stronie i przekierowuje jego zawartość do STDIN (standardowe wejście) polecenia po lewej stronie.
Nie
-
jest to konstrukcja Bash, ale argument,sed
który określa jej plik wejściowy. Specjalna wartość-
oznacza odczyt ze STDIN (który jest równieżsed
domyślny, więc można go pominąć).Ta linia najpierw uruchamia
openssl dgst -sha256 filename
i buforuje swoje dane wyjściowe w FIFO. Deskryptor pliku reprezentujący ten nazwany potok jest traktowany jako plik wejściowy, który zostaje przekierowany do STDIN wsed 's/^.*= //' -
. Tosed
polecenie czyta ze STDIN i usuwa każdy znak przed symbolem „=”, po którym następuje spacja.źródło