Гид по технологиям

Команда cat в Linux: как и когда её использовать

4 min read Linux Обновлено 23 Dec 2025
Команда cat в Linux: как и когда использовать
Команда cat в Linux: как и когда использовать

Женщина за компьютером редактирует код

Что такое cat?

cat — сокращение от «concatenate» (объединять). Это простая утилита для склеивания текста из одного или нескольких файлов и отправки результата на стандартный вывод (терминал) или в файл. В большинстве дистрибутивов Linux cat входит в пакет coreutils; в минималках и живых системах часто используется версия из BusyBox.

Краткое определение терминов:

  • STDIN — стандартный ввод, обычно клавиатура или вывод предыдущей программы в конвейере.
  • STDOUT — стандартный вывод, обычно терминал или ввод следующей программы.

Использование cat со стандартным вводом и выводом

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

Примеры команд:

cat | some_program
cat file.txt
cat file1 file2

Если вызвать cat без аргументов, она будет ждать ввода с клавиатуры. Наберите текст и завершите ввод сочетанием Ctrl+D (EOF). Чтобы записать ввод в файл, используйте перенаправление:

cat > some_file
# Введите строки, затем Ctrl+D

Чтобы дописать в файл, используйте >>:

cat >> some_file

Важное замечание: многие утилиты могут сами читать файлы и STDIN — поэтому конвейер с cat часто избыточен.

Когда использование cat избыточно (UUOC)

Термин UUOC (Useless Use Of cat) описывает ситуации, когда cat применяется перед командой, которая уже умеет читать файл или STDIN. Примеры “плохого” и “хорошего” использования:

Плохо:

cat file | grep pattern

Лучше:

grep pattern file

Плохо:

cat file | wc -l

Лучше:

wc -l < file
# или
wc -l file

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

Практические приёмы и альтернативы

Когда cat хороша:

  • Быстро вывести файл в терминал: cat file.txt
  • Объединить несколько файлов и перенаправить результат: cat a b > c
  • Создать файл из пользовательского ввода: cat > newfile
  • Быстро вставить содержимое в другой процесс через конвейер, если это очевиднее, чем использовать редирект

Альтернативы и дополнения:

  • less или most — постраничный просмотр больших файлов
  • head / tail — показать начало/конец файла
  • nl — нумерация строк
  • tac — вывод в обратном порядке
  • sed/awk — фильтрация и преобразование потока
  • pv — показать прогресс при передаче больших файлов
  • lolcat — цветное оформление вывода (развлекательный фильтр)

Примеры полезных сочетаний:

# Просмотреть файл с нумерацией строк
nl file.txt | less

# Быстро найти строку в сжатом дампе
zcat dump.gz | grep ERROR

# Выдать первые 100 строк из нескольких файлов
cat a b c | head -n 100

Когда cat не подходит — контрпримеры

  • При просмотре больших логов лучше использовать less, иначе терминал забьётся.
  • При анализе бинарных файлов cat выдаст нечитаемый мусор — используйте hexdump или strings.
  • В многопоточных сценариях записи в один файл с помощью cat > может привести к потере данных; применяйте блокировки или atomic-операции.

Мини‑методология: как принять решение — cat или нет

  1. Нужно ли просто вывести файл в терминал? — Да: cat.
  2. Нужно ли просмотр постранично? — Нет: less.
  3. Передаёте ли вы выход в команду, которая может прочитать файл напрямую? — Тогда используйте файл как аргумент.
  4. Требуется ли предобработка (фильтрация, подсчёт)? — sed/awk/grep лучше подходят.

Чек‑лист по ролям

Sysadmin:

  • Используйте cat для объединения конфигураций перед отправкой по сети.
  • Избегайте UUOC в автоматизированных скриптах.

Разработчик:

  • Для быстрого вывода тестовых данных cat удобна.
  • Для парсинга больших файлов используйте стриминг-инструменты (awk, jq для JSON).

Новичок:

  • Учитесь отличать STDIN и аргументы команд.
  • Пробуйте заменять cat file | cmd на cmd file.

Краткая шпаргалка (cheat sheet)

cat file                # вывести файл
cat file1 file2 > out   # объединить файлы
cat >> file             # дописать в файл (ввод до Ctrl+D)
command < file          # подать файл в STDIN команды
cmd file                # если команда принимает файл — предпочтительнее

Критерии приёмки

  • Команда корректно выводит содержимое файла в терминал.
  • Скрипты не используют cat в конвейерах там, где команда принимает файл.
  • Для больших файлов применён постраничный просмотр (less/most).

Рекомендации по безопасности и совместимости

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

Диаграмма ввода/вывода команды cat

Короткое резюме

cat — простая и удобная утилита для вывода и объединения текстовых файлов. Она остаётся незаменимой для быстрых задач, но в пайплайнах часто избыточна: сначала проверьте, принимает ли целевая команда файлы или STDIN. Для просмотра больших файлов, нумерации строк и фильтрации лучше применять специализированные инструменты.

Важные моменты:

  • Проверяйте man-страницы перед использованием cat в пайплайне.
  • Используйте less/head/tail для больших файлов.
  • Помните о различиях между coreutils и BusyBox при переносе скриптов.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Aitum Vertical Plugin для OBS — вертикальный стриминг
Стриминг

Aitum Vertical Plugin для OBS — вертикальный стриминг

Как отформатировать SD‑карту на Mac
Руководство

Как отформатировать SD‑карту на Mac

Перенос чатов WhatsApp с iPhone на Android
Мобильные устройства

Перенос чатов WhatsApp с iPhone на Android

Как снимать ночью: избавляемся от смаза
Фотография

Как снимать ночью: избавляемся от смаза

Как блокировать мошеннические номера и спам‑звонки
Безопасность

Как блокировать мошеннические номера и спам‑звонки

Настройка разблокировки по лицу на Samsung Galaxy
Смартфоны

Настройка разблокировки по лицу на Samsung Galaxy