2010-11-30 7 views
0

Команда diff работает только в том случае, если она снабжена двумя файлами. Можно ли заменить один файл выходом другой команды? Вторая команда, упомянутая ниже, не работает., выводящий команду на другую команду

$ 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

Может вы просто пишете вывод другого команду во временный файл? – 2010-11-30 10:50:25

ответ

1

В bash вы можете использовать замену процесса.

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

yes as doing `cat` ls`` выводит вывод ls в cmdline cat, из-за чего он считывает все файлы, которые напечатали имена, но с помощью `cat <(ls)` распечатывает распечатку, и это то, что вы хотите – 2010-11-30 10:53:02

1

Вы можете направить один файл из стандартного ввода

$ mysqldump -uroot -pPassWord test some_other_tbl --skip-extended-insert | diff to_backup.sql - 
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 
Смежные вопросы