Eu precisava extrair um shasum. Isso funciona, mas alguém pode explicar o porquê?
sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Eu estou familiarizado com a $( )
construção, mas não consigo encontrar documentos para <( )
, juntamente com -<
, os quais eu assumo que estão redirecionando para o sed
STDIN.
Eu sei que existem maneiras mais fáceis, mas essa construção me escapa.
openssl ... | sed '...'
A
<( COMMAND )
construção Bash é chamada substituição de processo .Ele avalia o
COMMAND
interior e redireciona sua saída para um FIFO, um pipe nomeado que recebe um descritor de arquivo virtual dentro de um local/dev/fd
designado. Ele age como um arquivo temporário que contém a saída do comando avaliado.A
<
construção Bash é chamada de redirecionamento de entrada .Ele pega um descritor de arquivo no lado direito e redireciona seu conteúdo para o STDIN (entrada padrão) do comando no lado esquerdo.
O
-
não é uma construção Bash, mas um argumento parased
isso especifica seu arquivo de entrada. O valor especial-
significa ler do STDIN (que tambémsed
é o padrão, para que possa ser omitido).Essa linha é executada
openssl dgst -sha256 filename
e armazena em cache sua saída em um FIFO. O descritor de arquivo que representa esse pipe nomeado é tratado como arquivo de entrada que é redirecionado para o STDIN desed 's/^.*= //' -
. Estesed
comando lê STDIN e remove todos os caracteres antes de um símbolo "=" seguido por um espaço.fonte