$ cmp -s file1 file2, эта команда ничего не возвращает в следующих случаях: случай 1: оба файла разные; случай 2: оба файла одинаковы [закрыто]

-1
10.08.2018, 20:30
2 ответа

-sдля без звука , это говорит cmpничего не выводить¹, а только отражать, идентичны ли файлы или нет в его статусе выхода, чтобы его можно было использовать, например, в ifоператор оболочки:

if cmp -s file1 file2; then
  echo same
else
  echo differ or error
fi

Или:

cmp -s file1 file2 && rm file2

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


¹ за исключением некоторых реализаций сообщений об ошибках, когда файлы не могут быть открыты, а не тогда, когда они отличаются.

4
28.01.2020, 05:06

Я бы поставил под сомнение ваш случай 1. Если cmp ничего не возвращает, то файлы, скорее всего, идентичны. Попробуйте diff file1 fileи sum file1 file2для подтверждения. Возможно ли, что различия заключаются в непечатаемых символах -?

1
28.01.2020, 05:06

Теги

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