Kodokon kodokon.com

Чтение файла и перенаправление вывода

Показывай содержимое файла командами cat, head и tail, а затем сохраняй вывод в файл.

7 мин · 3 вопросов

Открыть этот урок в Kodokon

Не всегда нужно открывать редактор, чтобы просто заглянуть в файл. Команда cat выводит его содержимое прямо в терминал. Её имя происходит от concatenate, «соединить встык», потому что она умеет показывать и несколько файлов подряд. Это идеальный инструмент для небольших файлов: максимум несколько десятков строк.

BASH
yoann@laptop:~/my-project$ cat shopping.txt
Хлеб
Сыр
Помидоры

yoann@laptop:~/my-project$ cat shopping.txt notes.txt
Хлеб
Сыр
Помидоры
Не забыть субботний рынок
cat для одного файла, затем для двух файлов, показанных один за другим.

На файле в десять тысяч строк cat будет секунд десять гнать экран, и ты успеешь увидеть только конец. Есть две более точные команды: head показывает начало файла, tail показывает его конец. По умолчанию обе выводят 10 строк, а опция -n позволяет выбрать, сколько именно. У tail есть суперспособность - опция -f (follow): команда остаётся открытой и выводит новые строки по мере того, как они появляются. Именно так наблюдают за журналом сервера в реальном времени.

BASH
head server.log
head -n 5 server.log
tail -n 20 server.log
tail -f server.log
Начало, первые 5 строк, последние 20, а затем конец в реальном времени (Ctrl + C для выхода).

По умолчанию команда пишет свой результат на экран. Но этот результат можно отвести в файл, как отводят воду из шланга в ведро. Это перенаправление, и записывается оно угловой скобкой. Одинарная скобка > отправляет вывод в файл, затирая всё, что в нём было. Двойная скобка >> дописывает в конец, ничего не стирая. Разница в один символ меняет всё. А чтобы проверить только что созданное, не выводя его целиком, есть команда wc (word count) с опцией -l (lines): она считает количество строк в файле.

BASH
yoann@laptop:~/my-project$ echo "Моя первая строка" > notes.txt
yoann@laptop:~/my-project$ echo "Моя вторая строка" >> notes.txt
yoann@laptop:~/my-project$ cat notes.txt
Моя первая строка
Моя вторая строка
yoann@laptop:~/my-project$ ls -l > inventory.txt
yoann@laptop:~/my-project$ wc -l inventory.txt
7 inventory.txt
Создать файл, дописать строку, проверить, сохранить вывод и посчитать его строки.

Проверка знаний

Убедись, что запомнил ключевые моменты этого урока.

  1. Для чего нужна команда cat?
    • Показать содержимое файла в терминале
    • Создать пустой файл
    • Удалить файл
    • Посчитать строки в файле
  2. В чём разница между > и >>?
    • > дописывает в конец, >> затирает файл
    • > затирает файл, >> дописывает в конец
    • Никакой, обе пишут в файл
  3. Как показать последние 20 строк файла server.log?
    • head -n 20 server.log
    • cat -n 20 server.log
    • tail -n 20 server.log