Necesitaba extraer un shasum. Esto funciona, pero ¿alguien puede explicar por qué?
sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Estoy familiarizado con la $( )
construcción, pero no puedo encontrar documentos para <( )
, junto con -<
, que supongo que está redirigiendo al sed
STDIN.
Sé que hay formas más fáciles, pero esta construcción me elude.
openssl ... | sed '...'
La
<( COMMAND )
construcción Bash se llama sustitución de proceso .Evalúa el
COMMAND
interior y redirige su salida a una FIFO, una tubería con nombre que obtiene un descriptor de archivo virtual/dev/fd
asignado. Actúa como un archivo temporal que contiene la salida del comando evaluado.La
<
construcción Bash se llama redirección de entrada .Toma un descriptor de archivo en el lado derecho y redirige su contenido al STDIN (entrada estándar) del comando en el lado izquierdo.
El
-
no es una construcción Bash sino un argumentosed
que especifica su archivo de entrada. El valor especial-
significa leer desde STDIN (que tambiénsed
es el predeterminado, por lo que podría omitirse).Esta línea primero se ejecuta
openssl dgst -sha256 filename
y almacena en caché su salida en un FIFO. El descriptor de archivo que representa esta canalización con nombre se trata como un archivo de entrada que se redirige al STDIN desed 's/^.*= //' -
. Estesed
comando lee desde STDIN y elimina todos los caracteres antes de un símbolo "=" seguido de un espacio.fuente