Чтение файлов
Ранее в курсе мы обсудили общее устройство файловой системы в POSIX-совместимых операционных системах.
Пора приступать к взаимодействию с файлами. В этом уроке рассмотрим различные способы чтения текстовых файлов.
Команда cat
Самый простой способ прочитать файл — команда cat
:
Команда cat
ожидает аргументы — пути до файлов, которые надо читать. В простейшем случае достаточно передать один путь. Это удобно, когда надо посмотреть содержимое небольшого файла:
Команды head и tail
Иногда нужно посмотреть только начало файла или его конец, в такой ситуации помогают команды head
и tail
. Они тоже принимают на вход путь до файла, только head
показывает первые 10 строк, а tail
— последние 10 строк файла.
Это поведение можно менять, задавая желаемое количество строк через опцию -n
:
Посмотрим, как работает head
:
Похожим образом работает tail:
Некоторые файлы наполняются очень интенсивно. Например, быстро наполняются логи — это текстовые файлы, в которые заносится информация о происходящих процессах в определенной системе.
В Linux логи лежат в каталоге /var/log
. Туда пишет и сам Linux, и большая часть установленных программ. Основной файл логов Linux называется syslog
.
Туда попадает ключевая информация о происходящих процессах в операционной системе и возникающих ошибках.
В WSL syslog
не включен по умолчанию. Чтобы включить его, сперва установите его как:
А затем запустите, используя команду sudo service rsyslog start
.
Представим, что нам нужно изучить события, которые происходят часто. Знакомые команды в этой ситуации не помогут:
Пользоваться командой
cat
неудобно, потому чтоsyslog
слишком большойКоманда
tail
тоже не подойдет, потому что при высокой скорости записи логов мы рискуем пропустить часть события
В этой ситуации поможет tail
, запущенный в особом режиме — с флагом -f
.
Команда tail -f path/to/file
не просто выводит последние строчки файла, но и ждет появления новых. Как только файл дописывается, tail
сразу выводит на экран добавленные строки.
Среди наших примеров это первая команда, которая захватывает управление. Другими словами, после запуска она не заканчивает выполнение сразу, а продолжает работать, ожидая новые данные в файле, который выводится:
Для остановки выполнения этой команды нажмите Ctrl + C.
Пейджеры
Особая категория программ для просмотра содержимого файла — пейджеры. Пейджер похож на текстовый редактор, открытый только в режиме чтения. Самый распространенный пейджер называется less
. Попробуем открыть с помощью него файл syslog
:
Пейджер less
открывает файл и остается в этом режиме. Он позволяет производить поиск и перемещаться по файлу вперед и назад.
Одна из отличительных особенностей пейджеров состоит в том, что они одинаково хорошо работают с файлами любых размеров. Все потому, что пейджер не пытается загрузить в память весь файл до его отображения. Он грузит только ту часть, которая помещается на экран и при перемещении подгружает остальное.
В целом, пейджер less
предоставляет несколько десятков команд для перемещения по тексту и его поиску, про большинство из них можно прочитать в соответствующем мануале. Здесь затронем основные:
Выход —
q
Вперед на страницу —
f
Назад на страницу —
b
Поиск введенного текста — вводим
/
, печатаем текст и нажимаем EnterПереход к следующему совпадению —
n
Переход к предыдущему совпадению —
N
Поведение пейджеров похоже на то, что мы наблюдали в мануалах. Дело в том, что когда мы запускали man
, то перед нами открывался less
с загруженным туда контентом. Как вы увидите позже, пейджеры невероятно популярны и неявно запускаются другими программами.
Вопросы для самопроверки
По какому пути находится домашняя директория пользователя joe?
/home/joe
/home
/root
По какому пути находится домашняя директория суперпользователя?
/home/root
/root
/home