Просмотр и сравнение содержимого файлов

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать на практическое занятие по работе с файлами в Linux! Если вы новичок в этой операционной системе — не волнуйтесь. Мы подробно разберем каждый шаг. В ходе этой лабораторной работы вы научитесь просматривать содержимое файлов, изучать их отдельные части и сравнивать файлы между собой. Это базовые навыки, которые помогут вам уверенно ориентироваться в файловой системе Linux.

Вывод содержимого файла

Для начала откройте терминал на рабочем столе ИЛИ переключитесь на вкладку терминала в среде лабораторной работы.

Скриншот окна терминала

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

Давайте воспользуемся командой cat для отображения содержимого файла:

  1. В терминале введите следующую команду и нажмите Enter:
cat /tmp/hello

Здесь /tmp/hello — это путь к файлу, который мы хотим просмотреть. /tmp — это директория (папка) в вашей системе, а hello — имя файла в этой папке.

  1. После нажатия Enter вы увидите содержимое файла:
Hi,
I am Labby!

Это всё, что содержится в файле /tmp/hello. Команда cat вывела эти данные прямо в терминал.

Отображение содержимого файла с нумерацией строк

Теперь снова воспользуемся командой cat, но на этот раз добавим нумерацию строк к выводу.

  1. В терминале введите следующую команду и нажмите Enter:
cat -n /tmp/hello

Флаг -n здесь является опцией. Он указывает команде cat пронумеровать все выходные строки.

  1. Теперь вы должны увидеть содержимое файла с номерами строк:
     1 Hi,
     2 I am Labby!

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

Вывод первых строк файла

Далее мы воспользуемся командой head. Как следует из названия (англ. head — голова), она используется для просмотра начала файла.

  1. В терминале введите следующую команду и нажмите Enter:
head -n1 /tmp/hello

Здесь -n1 — это опция, которая приказывает head показать только первую строку. Вместо 1 можно подставить любое число, чтобы увидеть соответствующее количество строк.

  1. Вы увидите следующий результат:
Hi,

Это только первая строка файла. По умолчанию, если не указывать опцию -n, команда head выводит первые 10 строк.

Просмотр первых нескольких байт файла

Мы снова применим команду head, но на этот раз для просмотра определенного количества байт с начала файла.

  1. В терминале введите следующую команду и нажмите Enter:
head -c1 /tmp/hello

Опция -c1 указывает head отобразить только первый байт (символ) файла. Как и в случае с -n, вы можете изменить 1 на любое другое число.

  1. Вы увидите следующий результат:
H

Это самый первый символ файла. В текстовых файлах один символ обычно занимает один байт.

Вывод последних строк файла

Перейдем к команде tail. Как вы могли догадаться, tail (англ. tail — хвост) является противоположностью head — она показывает конец файла.

  1. В терминале введите следующую команду и нажмите Enter:
tail -n1 /tmp/hello

Как и в случае с head, опция -n1 указывает tail вывести только одну строку — в данном случае последнюю.

  1. Вы увидите следующий результат:
I am Labby!

Это последняя строка нашего файла. Без опции -n1 команда tail по умолчанию вывела бы последние 10 строк.

Просмотр последних нескольких байт файла

Аналогично тому, как мы делали с head, мы можем использовать tail для отображения определенного количества байт с конца файла.

  1. Сначала попробуем просмотреть последний байт. В терминале введите команду и нажмите Enter:
tail -c1 /tmp/hello

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

  1. Давайте попробуем просмотреть последние два байта. Введите следующую команду:
tail -c2 /tmp/hello
  1. Теперь вы должны увидеть:
!

Опция -c2 указывает tail показать последние 2 байта (символа) файла. В данном случае отображается восклицательный знак — последний видимый символ в нашем файле.

Сравнение файлов

Теперь мы научимся использовать команду diff для сравнения двух файлов и выявления различий между ними.

  1. Сначала убедимся, что мы находимся в нужной директории. Введите команду и нажмите Enter:
cd ~/project

Это изменит текущую рабочую директорию на папку "project" в вашем домашнем каталоге. Символ ~ — это сокращение для пути к вашему домашнему каталогу.

  1. Теперь сравним два файла. Введите следующую команду:
diff file1 file2

Это заставит diff сопоставить содержимое file1 и file2.

  1. Вы увидите вывод, похожий на этот:
1c1
< this is file1
---
> this is file2

Давайте разберем, что это значит. Команда diff генерирует описание изменений, которые необходимы, чтобы сделать первый файл идентичным второму. Неважно, какой файл был создан раньше; diff просто сравнивает их состояние на текущий момент.

  • 1c1: Это означает, что строка 1 в первом файле должна быть изменена (changed), чтобы соответствовать строке 1 во втором файле.
  • < this is file1: Символ < указывает на строку из первого файла (file1).
  • ---: Это разделитель между строками из первого и второго файлов.
  • > this is file2: Символ > указывает на строку из второго файла (file2).

Простыми словами, diff показывает нам, что содержимое первой строки в этих файлах различается. Чтобы file1 стал таким же, как file2, строку "this is file1" нужно заменить на "this is file2".

Сравнение директорий

Напоследок воспользуемся командой diff для сравнения целых папок.

  1. В терминале введите следующую команду и нажмите Enter:
diff -r ~/Desktop ~/Code

Опция -r (recursive) указывает diff сравнивать также и все вложенные поддиректории. ~/Desktop и ~/Code — это пути к двум сравниваемым папкам.

  1. Вы можете увидеть примерно такой вывод:
Only in /home/labex/Desktop: code.desktop
Only in /home/labex/Desktop: gedit.desktop
Only in /home/labex/Desktop: gvim.desktop
Only in /home/labex/Desktop: xfce4-terminal.desktop

Этот результат показывает, что в директории Desktop есть четыре файла, которых нет в директории Code.

Резюме

Поздравляем! Вы завершили лабораторную работу по просмотру и сравнению содержимого файлов. Давайте вспомним, чему вы научились:

  1. Использовали cat для просмотра всего содержимого файла.
  2. Узнали, как с помощью cat -n выводить текст с нумерацией строк.
  3. Применяли head для просмотра начала файла (по строкам и по байтам).
  4. Применяли tail для просмотра конца файла (по строкам и по байтам).
  5. Научились использовать diff для поиска различий между файлами.
  6. Использовали diff -r для сравнения содержимого целых директорий.

Эти команды являются фундаментальными инструментами в Linux. В процессе дальнейшей работы вы будете часто использовать их для проверки и сопоставления файлов и папок.

Помните: если вы забудете, как использовать ту или иную команду, вы всегда можете ввести man, а затем имя команды (например, man cat), чтобы открыть справочное руководство. Там вы найдете подробную информацию обо всех доступных опциях.

Продолжайте практиковаться с этими командами на разных файлах, чтобы довести навык до автоматизма. Чем чаще вы их используете, тем привычнее они становятся!