"diff orig new" против "diff new orig"

"diff orig new" против "diff new orig"

При сравнении двух файлов с помощью diffфайл originalуказывается в качестве первого аргумента, а new(измененный) — в качестве второго аргумента.

diff original new

Предположительно, логика такого порядка заключалась в том, чтобы показать, как преобразовать оригинал в новый, используя условность течения времени слева направо.

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

diff new original

так что я могу, просмотрев изменения, вставить новый файл в старый и таким образом «приклеить» его к новой версии.

cat new > original

Но использование «my» инвертированной записи сбивает с толку, поскольку diff показывает +и удаление, и -добавление.

Как решить эту проблему?

решение1

Беглый взгляд на страницу руководства подсказывает, что вы можете использовать опции --from-file=originalи --to-file=new, если хотите быть явными. Вам придется печатать немного больше, но это даст вам необходимую гибкость и в качестве бонуса сделает вещи явными.

diff --to-file=new --from-file=original

Если хотите, вы также можете написать простой скрипт-оболочку, который берет только имена файлов в нужном вам порядке и запускает его для вас.

EDIT: Это для GNU diff... хотя не уверен, являются ли это стандартными (POSIX) опциями.

решение2

Есть простое решение!

Напишите следующий сценарий:

if [ "$#" -ne 2 ]; then
    echo "USAGE: diff2 newfile oldfile"
    exit 1;
fi

diff $2 $1

Сохраните его в одной из папок в PATH (возможно, /binили /usr/bin) как diff2.

И все, теперь вы можете звонить:

diff2 newfile oldfile, который затем вызоветdiff oldfile newfile

Связанный контент