2010-11-30 3 views
0

La commande diff ne fonctionne que si elle a été fournie avec 2 fichiers. Est-il possible de remplacer un fichier par la sortie d'une autre commande? La deuxième commande mentionnée ci-dessous ne fonctionne pas.Acheminer la sortie vers une autre commande

$ mysqldump -ushantanu -pPassWord test tbl --skip-extended-insert > to_backup.sql 

$ diff `mysqldump -uroot -pPassWord test some_other_tbl --skip-extended-insert` to_backup.sql 
-bash: /usr/bin/diff: Argument list too long 
+0

Can Ne vous écrivez pas la sortie de l'autre commande à un fichier temporaire? –

Répondre

1

Dans bash, vous pouvez utiliser la substitution de processus.

diff <(mysqldump ...) to_backup.sql 
+0

oui en faisant 'cat' ls'' met la sortie de ls dans la cmdline de cat qui lui fait lire tous les fichiers dont il a imprimé les noms mais en utilisant 'cat <(ls)' il imprime ce qu'il a imprimé et c'est quoi vous voulez –

+0

J'avais essayé cela. Mais s'il y a un espace entre shantanuo

+0

La raison en est que la construction n'a pas d'espace là. –

1

Vous pouvez diriger un fichier à partir stdin

$ mysqldump -uroot -pPassWord test some_other_tbl --skip-extended-insert | diff to_backup.sql - 
0

Vous pouvez utiliser - comme nom de fichier spécial pour représenter l'entrée standard:

$ echo foo > bar 
$ echo foo > baz 
$ cat bar | diff - baz 

ou

$ mysqldump -uroot -pPassWord test some_other_tbl --skip-extended-insert | diff - to_backup.sql 
Questions connexes