При сравнении двух файлов с помощью 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