Найти в Дзене
Герман Геншин

Скрытые возможности команды cat в Linux: 6 приёмов, которые вы наверняка недооценивали

Оглавление

Если вы считаете, что команда cat в Linux нужна только для того, чтобы смотреть обычные файлы, — вы сильно ошибаетесь! Cat умеет куда больше, чем просто показывать содержимое. Я расскажу, как раскрыть весь потенциал cat — от стандартных задач до неожиданных приёмов.

1 Объединение нескольких файлов

Начну с самого главного: cat придумали именно для объединения (или, если по-научному — «конкатенации») файлов. Собственно, «cat» — это сокращение от concatenate, что значит «соединять». Допустим, у вас есть файл «foo» с примерным содержимым:

А ещё есть файл «bar», например, вот такой:

Чтобы склеить их вместе, просто укажите оба имени через пробел в команде cat:

В результате cat объединит файлы: второе содержимое сразу идёт после первого.

-2

На первый взгляд мелочь, но лично мне не раз приходилось объединять журналы событий или главы книги в единый файл. Иногда это самый быстрый способ собрать всё для отправки или хранения (хотя для архивации удобнее использовать tar).

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

А что будет, если cat запустить только с одним файлом? Всё просто: cat покажет содержимое этого файла — и никаких предупреждений.

-3

Cat тут же выводит текст на экран. Если файл длинный, придётся прокручивать терминал вручную. Не пробуйте cat-ить исполняемые файлы — на экране появится абракадабра, и вы можете временно «сломать» отображение терминала.

Этот способ отлично подходит, когда нужно быстро глянуть небольшой текстовый файл. Для больших файлов удобнее пользоваться more или less.

Если выполнить cat без параметров, команда начнёт отображать всё, что вы вводите на клавиатуре, пока не нажмёте Ctrl + D (это сигнал «конец файла»). Ниже расскажу, как можно использовать этот трюк.

3 Пронумеровать строки в файле

Тем, кто пишет код или работает в команде, часто нужны номера строк. Да, они есть во всех редакторах, но иногда проще быстро пронумеровать строки с помощью cat и нужной опции:

-4

Флаг -n добавит непрерывную нумерацию строк, начиная с первой. Правда, поведение соответствует системе: в Ubuntu номера идут подряд, в macOS счётчик может сбиваться на каждом файле.

Есть отдельная опция — -b: она пропускает пустые строки при нумерации. Правда, для программирования это не очень удобно, ведь компиляторы считают все строки, включая пустые.

Для таких задач в Linux есть и отдельная команда — nl. Она даёт больше гибкости, например, позволяет нумеровать по страницам. Рекомендую попробовать, если нужна продвинутая настройка.

4 Объединить два файла в третий

Cat раскрывает настоящий потенциал с возможностями shell — с перенаправлением вывода и пайпами. Например, склеить два файла в новый можно так:

Всё просто: символ > отправляет результат в указанный файл. Если файл ещё не существует, он создастся. Если есть — сотрётся и перезапишется.

5 Создание или обновление текстового файла

Через cat можно буквально «на лету» создать новый текстовый файл — не открывая редактор.

Просто запустите cat без параметров и сразу направьте его вывод в нужный файл. Например:

В терминале появится пустая строка: теперь всё, что вы введёте, сразу попадёт в файл. Чтобы выйти, нажмите Ctrl + D — это подаст сигнал завершения ввода.

Если вы хотите добавить текст к уже существующему файлу (а не переписать его начисто), используйте двойную стрелку >>.

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

6 Передача содержимого файла другой команде

Один из самых спорных способов — использовать cat для передачи файла другой команде через пайп, вроде:

cat file | grep текст или cat file | tr '!' '.'

Так делать можно, но опытные пользователи советуют короче: для grep достаточно просто указать имя файла (grep текст file), а для tr — перенаправить ввод с помощью <:

Этот подход проще читателю скрипта и чуть эффективнее для системы. Но если привычнее делать через cat — не страшно, иногда так и удобнее собирать сложные цепочки команд.

Самое главное — помните про перенаправление в Linux. Это мощный инструмент, который здорово облегчает жизнь и помогает автоматизировать рутину.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

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

Также подписывайтесь на нас в: