2009-02-26 6 views
1

La commande unix tee sépare l'entrée standard de stdout ET un fichier. Ce dont j'ai besoin est quelque chose qui fonctionne dans l'autre sens, en fusionnant plusieurs entrées à une sortie - j'ai besoin de concaténer la sortie standard de deux (ou plus) commandes.
Vous ne savez pas quelle devrait être la sémantique de cette application - supposons que chaque argument est une commande complète.Commande `tee` équivalente pour * entrée *?

Exemple:

> eet "echo 1" "echo 2" > file.txt 

devrait générer un fichier qui a contenu

1 
2 

J'ai essayé

> echo 1 && echo 2 > zz.txt 

Il ne fonctionne pas.

Note de côté: I sais Je pourrais simplement ajouter les sorties de chaque commande au fichier, mais je veux le faire en une fois (en fait, je veux diriger les sorties fusionnées vers un autre programme).
De plus, je pouvais rouler ma propre, mais je suis paresseux chaque fois que je peux me le permettre :-)

Oh oui, et ce serait bien si cela fonctionnait sous Windows (même si je suppose que tout bash/linux solution fonctionne -flavored, via UnxUtils/msys/etc)

Répondre

7

Essayez

(echo 1; echo 2) > file.txt 

frayant un sous-shell et exécute les commandes il

{ echo 1; echo 2; } > file.txt 

est également possible. Cela ne se reproduit pas un sous-shell (le point-virgule après la dernière commande est importante)

+0

Quelle coque utilisez-vous? J'ai essayé le premier dans windows 'cmd.exe et le contenu du fichier est' 1; écho 2 '; la 2ème option ne fonctionne pas du tout. –

+0

Je l'ai eu pour travailler dans cmd.exe comme ceci: (echo 1 && echo 2)> fichier.txt –

+0

J'utilise bash sur linux. (echo 1 && echo 2) ne fonctionne que si echo 1 renvoie 0 (succès)! && signifie quelque chose comme AND, echo 2 est seulement exécuté si écho 1 ne manque pas –

-1

echo 1 > zz.txt && echo 2 >> zz.txt

Cela devrait fonctionner. Tout ce que vous faites est d'exécuter deux commandes les unes après les autres, où la première redirige vers un fichier, puis, si cela a réussi, vous exécutez une autre commande qui ajoute sa sortie à la fin du fichier que vous avez écrit en premier lieu .

+0

Avez-vous lu la note de côté vers la fin? –

1

Je suppose que ce que vous voulez, c'est exécuter les deux commandes en parallèle, et rediriger les deux sorties vers une autre commande.

je ferais:

(echo 1 & echo 2) | cat 

Où « echo 1 » et « 2 echo » sont les commandes générant les sorties et « chat » est la commande qui recevra la sortie fusionnée.

Questions connexes