Подтвердить что ты не робот

Как сохранить результат diff в Linux

Как получить результат в другом файле после применения diff к файлам A.txt и B.txt.

Предположим, что файл A.txt имеет:

a
b
c

Файл B.txt имеет:

a
b

при запуске

diff A.txt B.txt Он дает результат как c, но как сохранить его в файле C.txt?

4b9b3361

Ответ 1

Утилита diff производит вывод на стандартный вывод (обычно консоль). Как любая утилита UNIX, которая делает это, ее вывод может быть очень просто перенаправлен в файл, подобный этому:

diff A.txt B.txt >C.txt

Это означает "выполнить команду diff с двумя аргументами (файлы A.txt и B.txt) и поместить все, что в противном случае отображалось бы на консоли, в файл C.txt ". Сообщения об ошибках все равно будут отправляться на консоль.

Чтобы сохранить вывод diff в файл, а также отправить его на терминал, используйте tee так:

diff A.txt B.txt | tee C.txt

tee будет дублировать данные для всех именованных файлов (здесь только C.txt), а также для стандартного вывода (скорее всего, терминала).

Ответ 2

Используя >, вы можете перенаправить вывод в файл. Например:

    diff A.txt B.txt > C.txt

Это приведет к тому, что результат команды diff будет сохранен в файле C.txt.

Ответ 4

Есть некоторые файлы, которые diff может не справиться с выводом, такие как блочные специальные файлы, символьные специальные файлы и неработающие ссылки. Вывод из-за различий с ними может перейти к стандартной ошибке.

Интересно, что когда я перенаправил стандартную ошибку, я все еще пропустил некоторые вещи:

diff -qr <DirA> <DirB> 2>&1 > mydiff.txt

Единственный способ увидеть результаты всего было:

diff -qr <DirA> <DirB> |tee mydiff.txt

Я сравнивал результаты смонтированного каталога live-cd после копирования на внешний HD