将输出传递给另一个命令

时间:2010-11-30 10:48:16

标签: linux diff

diff命令只有在提供了2个文件时才有效。是否可以用另一个命令的输出替换一个文件?下面提到的第二个命令不起作用。

$ 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

3 个答案:

答案 0 :(得分:1)

在bash中,您可以使用进程替换。

diff <(mysqldump ...) to_backup.sql

答案 1 :(得分:1)

您可以从stdin管道传输一个文件

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

答案 2 :(得分:0)

您可以使用-作为特殊文件名来表示标准输入:

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

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