J'avais besoin d'extraire un shasum. Cela fonctionne, mais quelqu'un peut-il expliquer pourquoi?
sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Je connais la $( )
construction, mais je ne trouve pas de documentation pour <( )
, couplée à -<
, qui, je suppose, redirige vers le sed
STDIN.
Je sais qu'il existe des moyens plus faciles, mais cette construction m'échappe.
openssl ... | sed '...'
La
<( COMMAND )
construction Bash est appelée substitution de processus .Il évalue l'
COMMAND
intérieur et redirige sa sortie vers un FIFO, un canal nommé qui obtient un descripteur de fichier virtuel à l'intérieur/dev/fd
assigné. Il agit comme un fichier temporaire qui contient la sortie de la commande évaluée.La
<
construction Bash est appelée redirection d'entrée .Il prend un descripteur de fichier sur le côté droit et redirige son contenu vers le STDIN (entrée standard) de la commande sur le côté gauche.
Le
-
n'est pas une construction Bash mais un argument poursed
cela spécifie son fichier d'entrée. La valeur spéciale-
signifie lire à partir de STDIN (qui est égalementsed
la valeur par défaut, donc elle pourrait être omise).Cette ligne s'exécute d'abord
openssl dgst -sha256 filename
et met en cache sa sortie dans un FIFO. Le descripteur de fichier représentant ce canal nommé est traité comme un fichier d'entrée qui est redirigé vers le STDIN desed 's/^.*= //' -
. Cettesed
commande lit à partir de STDIN et supprime tous les caractères devant un symbole "=" suivi d'un espace.la source