bash: comment concaténer la sortie de deux commandes pour que je puisse pipe à un tiers?
$ hg status
et
$ hg status --ignored
donner des résultats semblables. Je voudrais concaténer afin que je puisse les nourrir à awk, comme s'il y avait un hg état --tous les (ou svn du svn status --no-ignorer)
Je suis en train de penser à quelque chose comme:
$ echo "$(hg status)" "$(hg status --ignored)" | awk ' ( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
de faire un "make très propre en effet de "commande", mais il semble parfois laisser un fichier de derrière, peut-être parce qu'un retour à la ligne disparaît ou quelque chose.
- Si vous remplacez
rm
avececho
(ou saut de la dernière pipe), alors qu'est-ce que la sortie et que devrait-il être? Aussi, il pourrait y avoir des problèmes d'autorisation oùrm
refuse de supprimer un fichier.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un shell interne est exécuté:
{ a; b; } | c
time { git branch; git branch -r; } > /dev/null; time (git branch; git branch -r) > /dev/null
en fait shell interne est exécuté est toujours plus rapide que sur mon système, donc @camh, quel est l'avantage d'un groupe?fork()
que le shell interne est exécuté. Il est très difficile de mesurer une seule exécution de ce genre de choses. Vous voulez l'exécuter à 1000 fois ou plus pour obtenir une bonne idée de la performance. Quand je fais cela, le groupe sort à 1,69 s et le shell interne est exécuté à 2.36 s, ce qui est environ 40% plus lent.Utilisation des accolades pour des commandes de groupe:
(Posté une réponse de camh commentaire)
sendmail -t
avec la sortie d'une autre commande.