7
votes

Pipe stdout à plusieurs processus [ZSH]

Je suis au courant de la capacité de ZSH à faire: xxx

mais disons que je veux exécuter les deux sorties à travers une autre commande. Par exemple, comment allez-moi combiner ces deux commandes afin d'éviter d'exécuter mysqldump deux fois? xxx

Le plus proche que je puisse arriver est: < / p> xxx

mais je préfère ne pas écrire le fichier sur le disque non compressé (c'est grand!).


0 commentaires

3 Réponses :


1
votes

Vous pouvez connecter des processus via la FIFO et utilisez TEE Utility pour copier la sortie standard à chaque FIFO et à STDOUT. Quelque chose comme: xxx


0 commentaires

7
votes

Les travaux suivants: xxx pré>

modifié pour votre exemple (mais non testé): p> xxx pré>

ou, probablement mieux: P. > xxx pré>

// J'ai trouvé presque le même exemple dans la section de substitution de processus dans man zshexpn code>: p>

Notez également que l'exemple précédent peut être écrit de manière plus compacte et efficace (à condition que l'option multidios soit définie) comme suit: p>

   { paste <(cut -f1 file1) <(cut -f3 file2) } > >(process)


0 commentaires

7
votes

Vous pouvez utiliser la substitution de processus.

dans ZSH: xxx

in bash: xxx

substitution de processus gère des tuyaux nommés pour vous.


1 commentaires

+1 - J'ai accepté @zyx puisqu'il s'agit d'une réponse plus complète - elle répond au problème avec attendre la commande à compléter - mais j'aime l'option ici pour utiliser Bash avec T-shirt, car je ne suis pas toujours dans ZSH. Merci!