Содержимое файлов и сравнение

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

Введение

Добро пожаловать в практическую лабораторную работу по работе с файлами в Linux! Если вы недавно начали знакомиться с 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,

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

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

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

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

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

  1. Вы должны увидеть следующий вывод:
H

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

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

Теперь перейдите к команде 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. Теперь попробуйте просмотреть вместо этого последние два байта. Введите следующую команду и нажмите Enter:
tail -c2 /tmp/hello
  1. Теперь вы должны увидеть:
!

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

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

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

  1. Сначала убедитесь, что вы находитесь в нужном каталоге (папке). Введите следующую команду и нажмите Enter:
cd ~/project

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

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

Команда diff сравнивает содержимое file1 и file2.

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

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

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

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

Сравнение каталогов

В завершение используйте команду diff, чтобы сравнить целые каталоги.

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

Опция -r указывает 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. По мере дальнейшей работы с Linux вы будете часто использовать их для просмотра и сравнения файлов и каталогов.

Если вы забудете, как пользоваться командой, введите man, а затем имя команды, например man cat, чтобы открыть man-страницу этой команды. В ней содержится подробная информация обо всех доступных опциях.

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