Как заставить разность распечатать полную разность файла, когда файл не существует?

Функция находится в libX11 - изменяющий X-серверы, не будет иметь значения. Не видя источник программы, мы не можем предположить, если изменение настроек локали мешало бы ему вызвать функцию, но изменить локаль не будет мешать компоновщику пытаться найти его в библиотеке.

Единственный способ получить libX11 для Соляриса 10 или более старый с той функцией в состоит в том, чтобы создать libX11 самостоятельно. Это не будет полностью совместимо с существующим X двоичных файлов все же. Sun/Oracle никогда не бэкпортировал новый libX11 от OpenSolaris/Solaris 11 до более старых выпусков.

6
13.04.2017, 15:36
2 ответа

По крайней мере с некоторыми версиями diffutils' GNU diff, можно использовать -N флаг, чтобы сделать это непосредственно (хотя в документации, кажется, говорится, что только работает на каталог diffs).

$ ls
foo
$ cat foo
foo
$ diff -u foo bar
diff: bar: No such file or directory
$ diff -uN bar foo
--- bar 1970-01-01 01:00:00.000000000 +0100
+++ foo 2012-09-04 12:45:34.000000000 +0200
@@ -0,0 +1 @@
+foo
$ diff -uN foo bar
--- foo 2012-09-04 12:45:34.000000000 +0200
+++ bar 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-foo
$ diff -v
diff (GNU diffutils) 2.8.1
Copyright (C) 2002 Free Software Foundation, Inc.
7
27.01.2020, 20:24
  • 1
    страница справочника для разности GNU 3.2 говорит только: -N, --new-file treat absent files as empty –  cas 04.09.2012, 14:05
  • 2
    Версия, которую я имею на руке (2.8.1), говорит "В сравнении каталога, если файл найден только в одном каталоге, рассматривайте его как существующий, но пустой в другом каталоге". так вот почему я поместил правовую оговорку. Хороший для знания это теперь документируется для некаталога diffs теперь. –  Mat 04.09.2012, 14:08

Вы попробовали diff -u /dev/null filename ?

это работало на меня, когда я просто попробовал его.

альтернативно:

touch missing
diff -u missing filename
rm missing

Кроме того, если Вы различные каталоги (например. diff -x /path/to/backup -uN / /path/to/backup) затем разность рекурсивно покажет полный diffs всех файлов, включая недостающие файлы. Вам нужно -x, --exclude=PAT опция, потому что/path/to/backup является subdir /

(благодаря Mat для напоминания мне-N опции)

3
27.01.2020, 20:24
  • 1
    благодарит за принятие, но я думаю, что ответ Mat лучше. diff -N кажется, делает точно, что Вы хотите, не наполняя вокруг tempfiles или/dev/null, и он дает Вам рекурсивную разность с двумя каталогами, которую я отредактировал из своего ответа, потому что он не работает правильно без -N –  cas 04.09.2012, 14:02

Теги

Похожие вопросы