2010-11-30 23 views
0

diffコマンドは、2つのファイルが提供されている場合にのみ動作します。あるファイルを別のコマンドの出力に置き換えることは可能ですか?下記の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 
+0

缶あなたはもう一方の出力を書きますコマンドを一時ファイルに適用しますか? –

答えて

1

bashでは、プロセス置換を使用できます。あなたがパイプあなたは特別なファイル名として-を使用することができますSTDIN

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

yes 'cat' ls''はcatのcmdlineにlsの出力を入れます。これは 'cat <(ls)'を使って名前を表示したすべてのファイルを読み込みます。あなたが望む –

+0

私はこれを試していた。しかし、<と(の間にスペースがあれば、それはうまくいかないでしょう。理由は何でしょうか? – shantanuo

+0

その理由は、コンストラクトにスペースがないからです。 –

1

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

または

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

から一つのファイルには、標準入力を表現することができます

diff <(mysqldump ...) to_backup.sql 
関連する問題