0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Ранее в курсе мы обсудили общее устройство файловой системы в POSIX-совместимых операционных системах.</p>
1
<p>Ранее в курсе мы обсудили общее устройство файловой системы в POSIX-совместимых операционных системах.</p>
2
<p>Пора приступать к взаимодействию с файлами. В этом уроке рассмотрим различные способы чтения текстовых файлов.</p>
2
<p>Пора приступать к взаимодействию с файлами. В этом уроке рассмотрим различные способы чтения текстовых файлов.</p>
3
<h2>Команда cat</h2>
3
<h2>Команда cat</h2>
4
<p>Самый простой способ прочитать файл - команда cat:</p>
4
<p>Самый простой способ прочитать файл - команда cat:</p>
5
<p>Команда cat ожидает<strong>аргументы</strong>- пути до файлов, которые надо читать. В простейшем случае достаточно передать один путь. Это удобно, когда надо посмотреть содержимое небольшого файла:</p>
5
<p>Команда cat ожидает<strong>аргументы</strong>- пути до файлов, которые надо читать. В простейшем случае достаточно передать один путь. Это удобно, когда надо посмотреть содержимое небольшого файла:</p>
6
<h2>Команды head и tail</h2>
6
<h2>Команды head и tail</h2>
7
<p>Иногда нужно посмотреть только начало файла или его конец, в такой ситуации помогают команды head и tail. Они тоже принимают на вход путь до файла, только head показывает первые 10 строк, а tail - последние 10 строк файла.</p>
7
<p>Иногда нужно посмотреть только начало файла или его конец, в такой ситуации помогают команды head и tail. Они тоже принимают на вход путь до файла, только head показывает первые 10 строк, а tail - последние 10 строк файла.</p>
8
<p>Это поведение можно менять, задавая желаемое количество строк через опцию -n:</p>
8
<p>Это поведение можно менять, задавая желаемое количество строк через опцию -n:</p>
9
<p>Посмотрим, как работает head:</p>
9
<p>Посмотрим, как работает head:</p>
10
<p>Похожим образом работает tail:</p>
10
<p>Похожим образом работает tail:</p>
11
<p>Некоторые файлы наполняются очень интенсивно. Например, быстро наполняются<strong>логи</strong>- это текстовые файлы, в которые заносится информация о происходящих процессах в определенной системе.</p>
11
<p>Некоторые файлы наполняются очень интенсивно. Например, быстро наполняются<strong>логи</strong>- это текстовые файлы, в которые заносится информация о происходящих процессах в определенной системе.</p>
12
<p>В Linux логи лежат в каталоге /var/log. Туда пишет и сам Linux, и большая часть установленных программ. Основной файл логов Linux называется syslog.</p>
12
<p>В Linux логи лежат в каталоге /var/log. Туда пишет и сам Linux, и большая часть установленных программ. Основной файл логов Linux называется syslog.</p>
13
<p>Туда попадает ключевая информация о происходящих процессах в операционной системе и возникающих ошибках.</p>
13
<p>Туда попадает ключевая информация о происходящих процессах в операционной системе и возникающих ошибках.</p>
14
<p>В WSL syslog не включен по умолчанию. Чтобы включить его, сперва установите его как:</p>
14
<p>В WSL syslog не включен по умолчанию. Чтобы включить его, сперва установите его как:</p>
15
<p>А затем запустите, используя команду sudo service rsyslog start.</p>
15
<p>А затем запустите, используя команду sudo service rsyslog start.</p>
16
<p>Представим, что нам нужно изучить события, которые происходят часто. Знакомые команды в этой ситуации не помогут:</p>
16
<p>Представим, что нам нужно изучить события, которые происходят часто. Знакомые команды в этой ситуации не помогут:</p>
17
<ul><li>Пользоваться командой cat неудобно, потому что syslog слишком большой</li>
17
<ul><li>Пользоваться командой cat неудобно, потому что syslog слишком большой</li>
18
<li>Команда tail тоже не подойдет, потому что при высокой скорости записи логов мы рискуем пропустить часть события</li>
18
<li>Команда tail тоже не подойдет, потому что при высокой скорости записи логов мы рискуем пропустить часть события</li>
19
</ul><p>В этой ситуации поможет tail, запущенный в особом режиме - с<strong>флагом</strong>-f.</p>
19
</ul><p>В этой ситуации поможет tail, запущенный в особом режиме - с<strong>флагом</strong>-f.</p>
20
<p>Команда tail -f path/to/file не просто выводит последние строчки файла, но и ждет появления новых. Как только файл дописывается, tail сразу выводит на экран добавленные строки.</p>
20
<p>Команда tail -f path/to/file не просто выводит последние строчки файла, но и ждет появления новых. Как только файл дописывается, tail сразу выводит на экран добавленные строки.</p>
21
<p>Среди наших примеров это первая команда, которая<strong>захватывает управление</strong>. Другими словами, после запуска она не заканчивает выполнение сразу, а продолжает работать, ожидая новые данные в файле, который выводится:</p>
21
<p>Среди наших примеров это первая команда, которая<strong>захватывает управление</strong>. Другими словами, после запуска она не заканчивает выполнение сразу, а продолжает работать, ожидая новые данные в файле, который выводится:</p>
22
<p>Для остановки выполнения этой команды нажмите Ctrl + C.</p>
22
<p>Для остановки выполнения этой команды нажмите Ctrl + C.</p>
23
<h2>Пейджеры</h2>
23
<h2>Пейджеры</h2>
24
<p>Особая категория программ для просмотра содержимого файла -<strong>пейджеры</strong>. Пейджер похож на текстовый редактор, открытый только в режиме чтения. Самый распространенный пейджер называется less. Попробуем открыть с помощью него файл syslog:</p>
24
<p>Особая категория программ для просмотра содержимого файла -<strong>пейджеры</strong>. Пейджер похож на текстовый редактор, открытый только в режиме чтения. Самый распространенный пейджер называется less. Попробуем открыть с помощью него файл syslog:</p>
25
<p>Пейджер less открывает файл и остается в этом режиме. Он позволяет производить поиск и перемещаться по файлу вперед и назад.</p>
25
<p>Пейджер less открывает файл и остается в этом режиме. Он позволяет производить поиск и перемещаться по файлу вперед и назад.</p>
26
<p>Одна из отличительных особенностей пейджеров состоит в том, что они одинаково хорошо работают с файлами любых размеров. Все потому, что пейджер не пытается загрузить в память весь файл до его отображения. Он грузит только ту часть, которая помещается на экран и при перемещении подгружает остальное.</p>
26
<p>Одна из отличительных особенностей пейджеров состоит в том, что они одинаково хорошо работают с файлами любых размеров. Все потому, что пейджер не пытается загрузить в память весь файл до его отображения. Он грузит только ту часть, которая помещается на экран и при перемещении подгружает остальное.</p>
27
<p>В целом, пейджер less предоставляет несколько десятков команд для перемещения по тексту и его поиску, про большинство из них можно прочитать в соответствующем мануале. Здесь затронем основные:</p>
27
<p>В целом, пейджер less предоставляет несколько десятков команд для перемещения по тексту и его поиску, про большинство из них можно прочитать в соответствующем мануале. Здесь затронем основные:</p>
28
<ul><li>Выход - q</li>
28
<ul><li>Выход - q</li>
29
<li>Вперед на страницу - f</li>
29
<li>Вперед на страницу - f</li>
30
<li>Назад на страницу - b</li>
30
<li>Назад на страницу - b</li>
31
<li>Поиск введенного текста - вводим /, печатаем текст и нажимаем Enter</li>
31
<li>Поиск введенного текста - вводим /, печатаем текст и нажимаем Enter</li>
32
<li>Переход к следующему совпадению - n</li>
32
<li>Переход к следующему совпадению - n</li>
33
<li>Переход к предыдущему совпадению - N</li>
33
<li>Переход к предыдущему совпадению - N</li>
34
</ul><p>Поведение пейджеров похоже на то, что мы наблюдали в мануалах. Дело в том, что когда мы запускали man, то перед нами открывался less с загруженным туда контентом. Как вы увидите позже, пейджеры невероятно популярны и неявно запускаются другими программами.</p>
34
</ul><p>Поведение пейджеров похоже на то, что мы наблюдали в мануалах. Дело в том, что когда мы запускали man, то перед нами открывался less с загруженным туда контентом. Как вы увидите позже, пейджеры невероятно популярны и неявно запускаются другими программами.</p>