в этом видео мы рассмотрим различные способы сравнения содержимого файлов. Это особенно полезно,
когда вы хотите сравнить либо вывод одной и той же команды в разные моменты времени, либо
различия между файлом конфигурации резервного копирования и файлом, который в настоящее время используется системой.
взгляните на первый пример, я перенаправляю вывод команды ifconfig в два файла в
разные моменты, поэтому у меня конфигурация больше, чем перенаправление комментариев a Я генерирую некоторый сетевой
трафик ping 8.8.8.8 Я останавливаю его, нажатие ctrl nc, и я перенаправляю вывод той
же команды в другой файл с именем ba, и b были созданы в текущем рабочем каталоге
файлы содержат вывод команды, а также различия между запусками,
чтобы увидеть, есть ли разница между двумя запусками команды я могу сравнить
содержимое файла, если вы только хотите знать, есть ли разница, запустите комментарий cmp, чтобы cmp a и b
cmp сравнивали файлы побайтно и отображали расположение первого несоответствия
не говорит, чем файлы различаются, и если они идентичны, сообщение не отображается
a равно a Я копирую команду ls в текущий каталог,
поэтому cp usr bin ls и текущий рабочий каталог
это двоичный файл ls в текущем каталоге, и я хочу увидеть, идентичен ли он исходному
cmp vsr bin ls и косой чертой ls ls из текущего рабочего каталога, это то же самое,
просто написав ls, это то же самое, и они идентично ничего не отображалось,
поэтому обратите внимание, что cmp можно использовать для сравнения двоичных файлов, кстати, еще один способ сравнить
два двоичных файла, чтобы увидеть, идентичны ли они, - это вычислить и сравнить их хэш, хэш
- это уникальный криптографический идентификатор для каждого файла давайте вычислим хэши файлов ls, используя sha 256,
поэтому sha 256 sum это имя команды и путь к файлу, так что да, наши bin
ls и ls в текущем рабочем каталоге, и они имеют одинаковый хеш, что означает, что они идентичны
если даже си ngle бит был другим, хеши были бы другими, теперь я меняю
скопированный файл, я добавляю что-то в конце, например, echo a больше, чем ls,
давайте посмотрим, идентичны ли двоичные файлы cmp srb в ls и ls в текущей работе каталог,
и они больше не идентичны, они различаются в первой строке, и хэши,
хэши не идентичны сейчас, если вы хотите глубже и точно увидеть, как они отличаются, вы
должны запустить команду div, которая используется только для текстовых файлов, поэтому div a и b diff обозначают различие
и используются для отображения различий в файлах путем сравнения их построчно, поэтому из вывода
x можно увидеть, что строки, которые отличаются, относятся к полученным и переданным
пакетам, это нормально, потому что там был сетевой трафик между запусками команды ifconfig
я запустил команду ping
давайте еще раз взглянем на вывод команды div, позвольте мне объяснить
вам, как интерпретировать вывод команды div в другом примере. st я установлю
openssh-сервер или демон, потому что он нам понадобится позже в ходе курса, поэтому sudo apt install
ssh
и он устанавливает открытый ssh-сервер,
это сделано, я копирую файл конфигурации ssh-демона в текущем рабочем каталог
cptc ssh ssh d подчеркните конфигурацию и место назначения в текущем каталоге это
файл конфигурации демона, который будет скопирован в текущий каталог.
Я открываю файл и меняю параметр порта, конечно, я открываю копию
и вместо этого из порта 22 я пишу порт 29
и сохраняю файл, если вы не знаете, как использовать vi, отредактируйте файл с помощью gedit,
графического редактора, доступного в Ubuntu,
просто перейдите в etc ssh
и откройте конфигурацию подчеркивания sshd file
это файл, однако мы очень углубимся в редактор vi в следующих лекциях,
и я запускаю команду div для файлов div исходный файл, это cssh sshd underline config,
а файл в моем текущем рабочем каталоге файл, который я изменил, давайте возьмем внимательно посмотрите на
вывод, который показывает нам строку, которая отличается номером строки, в этом примере это строка 15.
Символ c после 15 указывает, что мы должны изменить или заменить строку 15 в первом
файле на строку 15 во втором файле чтобы сделать их идентичными, два других значимых символа
- это a и d, где означает добавление или добавление, а d означает удаление строк, которым предшествует знак «меньше»,
- это строки из первого файла, а строки, которым предшествует знак «больше», - это строки
из второго файла на самом деле команда div помогает нам сделать файлы идентичными и точно указывает
, что следует делать. Это используется командой patch для выбора программы, в которой есть ошибка.
Позвольте мне рассказать вам несколько слов об этом. Предположим, что новая ошибка является программной. была обнаружена ошибка,
решение для исправления ситуации заключается в том, что разработчик изменяет исходный код вместо выпуска
всей программы, разработчик выпускает только патч, который на самом деле является файлом, который содержит
различия между файлом, который имеет ошибка и файл, в котором ошибка была решена этот файл, и
я имею в виду, что патч был сгенерирован командой div после вычисления различий между двумя
исходными файлами, затем вы можете применить патч к файлу, содержащему ошибку, с помощью инструмента
исправления патч file указывает, как файл должен быть изменен, чтобы он стал идентичным другому
файлу. правая другие полезные параметры команды div - это заглавная буква b для игнорирования пустых строк
w для игнорирования пробелов и i для игнорирования различий в регистрах в содержимом файла
и просмотра для более подробного сравнения
и последнего варианта, поэтому, если мы хотим отображать все содержимое файлов в столбцах
бок о бок с указанием различий, так что diff минус y и false,
вот разница,
конечно, канал к команде less будет намного лучше