Substitution de processus une forme de communication inter-processus qui permet à l'entrée ou à la sortie d'une commande d'apparaître sous forme de fichier (par exemple: `<(cmd)` ou `> (cmd)`).
Je me demandais comment comprendre ce qui suit: Piping du stdout d'une commande dans le stdin d'un autre est une technique puissante. Mais que se passe-t-il si vous devez canaliser la sortie standard de plusieurs commandes? C'est ici qu'intervient la substitution de processus. En d'autres termes, la substitution de processus …
J'essaie de comprendre les canaux nommés dans le contexte de cet exemple particulier. Je tape <(ls -l)dans mon terminal et obtenir la sortie comme, bash: /dev/fd/63: Permission denied. Si je tape cat <(ls -l), je pourrais voir le contenu du répertoire. Si je remplace le catavec echo, je pense avoir …
Aujourd'hui, j'apprends quelque chose sur fifo avec cet article: Introduction aux pipes nommées , qui est mentionné cat <(ls -l). J'ai fait quelques expériences en utilisant sort < (ls -l), ce qui fait apparaître une erreur: -bash: syntax error near unexpected token `('` Ensuite, j'ai découvert que j'avais mal ajouté …
Parfois, la substitution de processus ne fonctionnera pas comme prévu. Voici un exemple: Contribution: gcc <(echo 'int main(){return 0;}') Sortie: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status Contribution: Mais cela fonctionne comme prévu lorsqu'il est utilisé avec une commande différente: grep main <(echo 'int …
Certains shells, comme bash, prennent en charge la substitution de processus qui est un moyen de présenter la sortie du processus sous forme de fichier, comme ceci: $ diff <(sort file1) <(sort file2) Cependant, cette construction n'est pas POSIX et, par conséquent, n'est pas portable. Comment peut-on réaliser la substitution …
Je veux que mes scripts shell échouent chaque fois qu'une commande exécutée avec eux échoue. En général, je le fais avec: set -e set -o pipefail (généralement j'ajoute set -uaussi) Le fait est que rien de ce qui précède ne fonctionne avec la substitution de processus. Ce code affiche "ok" …
Je m'y attendais cat <(cat)et cat | catde faire la même chose: copier des lignes de stdin stdout. Ma compréhension était que les deux exécuteraient un catdans un sous-shell, redirigeraient la sortie catstandard du sous-shell vers un tube nommé temporaire, puis en exécuteraient un autre catdans le shell actuel avec …
Dans bash, je peux utiliser la substitution de processus et traiter la sortie d'un processus comme s'il s'agissait d'un fichier enregistré sur le disque: $ echo <(ls) /dev/fd/63 $ ls -lAhF <(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825] malheureusement, la substitution de processus n'est pas …
le echo one; echo two > >(cat); echo three; donne une sortie inattendue. Je lis ceci: Comment la substitution de processus est-elle implémentée dans bash? et de nombreux autres articles sur la substitution de processus sur Internet, mais je ne comprends pas pourquoi il se comporte de cette façon. Production …
J'essaie d'exécuter grep sur une liste de quelques centaines de fichiers: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Cependant, même si je recherche une chaîne que je connais dans les fichiers, ce qui suit ne recherche pas les fichiers: $ grep -i 'foo' <(cat files.txt) $ grep -i …
Dans la version 4.2.47 (1) de Bash, relâchez lorsque j'essaie de caténaliser du texte formaté qui provient d'un ICI-découment comme ceci: cat <(fmt --width=10 <<FOOBAR (I want the surrounding parentheses to be part of the HERE-document) (Even the preceding unbalanced parenthesis should be part of it. FOOBAR ) # I …
La ligne suivante est évidente: echo "bla" | foo | bar Mais ceux ci-dessous font-ils de même? echo "bla" | bar <(foo) echo "bla" | bar < <(foo) Lequel des fooet barlire "bla" de stdin et pourquoi? Je veux dire que, bien sûr, je peux simplement le coder et le …
J'ai un script qui analyse les noms de fichiers dans un tableau en utilisant la méthode suivante tirée d' un Q&A sur SO : unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done < <(find "$@" -type f -name '*.txt' -print0) Cela fonctionne très bien et …
Je n'ai pas beaucoup d'expérience dans l'utilisation du tee, donc j'espère que ce n'est pas très basique. Après avoir consulté l'une des réponses à cette question, je suis tombé sur un comportement étrange tee. Pour que je puisse sortir la première ligne et une ligne trouvée, je peux utiliser ceci: …
Je recherchais l' autre question , quand j'ai réalisé que je ne comprenais pas ce qui se passait sous le capot, quels étaient ces /dev/fd/*fichiers et comment les processus enfants pouvaient-ils les ouvrir.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.