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

Команда cat в Linux: синтаксис, флаги и примеры использования

7 min read Linux Обновлено 01 Dec 2025
Команда cat в Linux — синтаксис и примеры
Команда cat в Linux — синтаксис и примеры

Кот команда cat: крупным планом изображение файла и терминала

Содержание

  • Основной синтаксис команды cat
  • Флаги команды cat и примеры
  • Практические сценарии использования
  • Когда cat не подходит
  • Пошаговая инструкция (SOP) для безопасного объединения файлов
  • Критерии приёмки
  • Чеклисты по ролям
  • Частые вопросы

Основной синтаксис команды cat

Основной формат записи:

cat file1 file2 file3 > output

cat читает файлы по порядку и отправляет их содержимое в стандартный вывод (stdout). Символы перенаправления > и >> управляют тем, как сохранять результат:

  • > — перезаписывает или создаёт файл output.
  • >> — дописывает в конец файла или создаёт его, если он не существует.

Порядок файлов в команде определяет порядок их содержания в результате: содержимое file1 идёт перед file2 и т.д. Количество объединяемых файлов ограничено только доступным местом на диске и ограничениями файловой системы.

Пример для JSON-файлов:

cat file1.json file2.json > combined_file.json

Если опустить часть с перенаправлением, cat выведет содержимое в терминал:

cat file1.txt file2.txt

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

Терминал Linux: вывод cat для file1 и file2

Важно: cat не является текстовым редактором. Он показывает и объединяет потоки байтов, но не предоставляет возможности редактирования в интерактивном режиме.

Флаги команды cat и примеры

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

  • -n — нумерует все строки начиная с 1.
  • -b — нумерует только непустые строки.
  • -s — сжимает последовательные пустые строки, оставляя одну.
  • -e — показывает символ конца строки как $ (также включает отображение символов конца строки).
  • -t — отображает символы табуляции как ^I.
  • -q — тихий режим: не выводит предупреждение при отсутствии входного файла (поведение зависит от реализации).

Примечание: на разных реализациях (GNU cat и BSD cat) поведение некоторых флагов может немного отличаться. На Linux обычно используется GNU cat.

Флаг -n — нумерация всех строк

Синтаксис:

cat -n file1.txt

Запись с перенаправлением, чтобы сохранить результат:

cat -n file1.txt > file2.txt

cat нумерует строки в непрерывном счёте при последовательном объединении нескольких файлов: если первый файл закончился номером 33, следующий начнёт с 34.

Вывод cat -n с нумерацией строк

Совет: перед объединением больших файлов сравните их с помощью diff, чтобы не дублировать содержимое.

Флаг -b — нумерация только непустых строк

Когда в файле много пустых строк для форматирования, -b полезнее, так как нумерует только строки с текстом:

cat -b file1.txt

Если вы используете одновременно -b и -n, приоритет получит -b — пустые строки не будут нумероваться.

Вывод cat -b с нумерацией непустых строк

Флаг -s — сжатие пустых строк

-s сокращает две и более подряд идущих пустых строк до одной, улучшая читаемость:

cat -s file2.txt

Если между заполненными строками одна пустая строка, она останется; -s действует только при двух и более подряд пустых строк.

Пример работы флага -s

Флаг -e — показать конец строки

-e добавляет символ $ в конец каждой строки, что помогает при поиске скрытых пробелов и при работе с регулярными выражениями:

cat -e file1.txt

Флаг добавляет $ и в пустые строки, поэтому его часто полезно сочетать с -s.

Показ конца строки с помощью $

Флаг -t — отображение табуляции

-t заменяет символ табуляции на визуальное ^I. Это позволяет отличить табы от последовательности пробелов:

cat -t file1.txt > file2.txt

Если комбинировать -t с -n или -b, нумерация действует отдельно — пробелы остаются пробелами, а табы отображаются как ^I.

Отображение табуляции как ^I

Флаг -q — тихий режим

-q подавляет сообщение об ошибке при отсутствии входных файлов. Это удобно в скриптах, где отсутствие файла — ожидаемое событие.

cat -q maybe_missing.txt

Практические сценарии использования

  • Быстрый просмотр содержимого небольшого текстового файла: cat README.md
  • Объединение нескольких логов: cat app.log.* > merged.log
  • Подготовка CSV/JSON для последующей обработки скриптом: cat part1.csv part2.csv > all.csv
  • Нумерация строк для отладки: cat -n file.txt

cat часто используют как простую «стрелку» для передачи данных в другие программы через пайпы:

cat file.txt | grep "ошибка"

Но для больших файлов или интерактивного просмотра рекомендуется less.

Пример использования cat и nano для просмотра и редактирования

Когда cat не подходит

  • Бинарные файлы (видео, изображения, архивы): такие файлы содержат заголовки и служебные блоки. Простое конкатенирование приведёт к повреждению формата и проблемам при воспроизведении. Для видео используйте FFmpeg; для архивов — tar/zip с поддержкой многотомности.

  • Обработка больших файлов, превышающих объём доступной оперативной памяти: для потоковой обработки применяйте инструменты вроде awk, sed, split и pv.

  • Если требуется сложная агрегация по строкам или полям (слияние по ключу) — используйте join, awk, python или специализированные ETL-инструменты.

Пошаговая инструкция (SOP) для безопасного объединения файлов

Важно следовать простым шагам, чтобы не потерять данные:

  1. Оцените формат файлов (текст/бинарный). Если бинарный — не используйте cat для конкатенации.
  2. Сделайте резервную копию входных файлов или целевого каталога.
  3. Проверьте кодировку и окончания строк (UTF-8, CRLF vs LF). Смешанные кодировки приводят к некорректному отображению.
  4. Сравните файлы: diff file1 file2.
  5. Объедините в новый файл: cat file1 file2 > result.txt — избегайте перезаписи одного из входных файлов.
  6. Проверьте результат: wc -l result.txt и быстрый просмотр head/tail.
  7. Если всё верно, при необходимости переименуйте или переместите.

Короткая команда для безопасного объединения:

cp file1 file1.bak
cat file1 file2 > combined.tmp && mv combined.tmp combined.txt

Инцидентный план: что делать при случайном перезаписывании

Если вы случайно перезаписали файл (> вместо >>):

  • Немедленно прекратите запись на диск (не создавайте новые файлы в той же файловой системе), чтобы повысить шанс восстановления.
  • Если есть резервные копии — восстановите из них.
  • Для ext4/xfs/Btrfs используйте системные инструменты восстановления (восстановление зависит от конфигурации и журналирования). В облаке или на сервере — обратитесь к снапшотам.
  • В планах проектов всегда держите ретроспективные бэкапы.

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

  • Результат существует и имеет ожидаемый размер и количество строк.
  • Содержимое файлов сшито в ожидаемом порядке.
  • Кодировка и окончания строк соответствуют требованиям потребителя данных.
  • Для текстовых форматов — файл корректно парсится целевым скриптом или приложением.

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

Системный администратор:

  • Создать резервные копии
  • Оценить входные форматы
  • Проверить права доступа к файлам

Разработчик/инженер данных:

  • Проверить уникальность заголовков/ключей
  • Сопоставить кодировки
  • Запустить тесты парсинга

Контент-редактор:

  • Проверить визуальное форматирование
  • Убрать лишние пустые строки (-s)
  • Убедиться, что нумерация (-n/-b) корректна

Тесты и критерии приёмки (пример)

Тест 1: объединение двух CSV без заголовков

  • Шаги: cat a.csv b.csv > out.csv
  • Ожидаемый результат: wc -l out.csv = wc -l a.csv + wc -l b.csv

Тест 2: объединение двух JSON-файлов (не в массив)

  • Шаги: убедиться, что целевое приложение ожидает поток JSON или использовать jq для корректной агрегации.
  • Ожидаемый результат: корректный парсинг целевой программы.

Типичные проблемы и как их решать

  • Разные окончания строк (CRLF vs LF): нормализуйте dos2unix/unix2dos.
  • Разные кодировки: привести к UTF-8 (iconv -f cp1251 -t utf-8 file > file.utf8).
  • Наличие BOM в некоторых файлах: удалите BOM или используйте инструменты, которые учитывают его.

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

  • jq для слияния JSON-массивов.
  • awk/sed для преобразований при конкатенации (удаление заголовков, добавление разделителей).
  • tar/архивация для склеивания бинарных частей в единый архивный контейнер.
  • ffmpeg для корректного объединения видео: ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4.

Ментальные модели и эвристики

  • cat = «склейка байтов»; думайте о нём как о трубе, которая соединяет последовательные потоки.
  • Если контент — человекочитаемый текст и ожидается буквенный поток → cat подходит.
  • Если файл содержит заголовки/метаданные (видео, архивы, контейнеры) → используйте специализированные инструменты.

Сравнение: cat vs другие инструменты (кратко)

  • cat: простая конкатенация байтов, быстрый просмотр.
  • less/more: просмотр больших файлов интерактивно.
  • join/awk: слияние по ключевым полям.
  • ffmpeg: объединение видео с корректной обработкой заголовков.

Галерея пограничных случаев

  • Комбинирование файлов с разной кодировкой — приведёт к «кракозябрам» при выводе.
  • Объединение CSV с заголовками — дублирование заголовющей строки; используйте tail -n +2 для удаления заголовков у последующих частей.
  • Объединение огромных логов — следите за свободным местом и используйте pv для контроля скорости передачи.

Краткий глоссарий

  • BOM — метка порядка байтов в начале текста.
  • EOF — конец файла.
  • таб — символ табуляции (ASCII 9).
  • stdin/stdout — стандартный ввод/вывод процессов в Unix.

Часто задаваемые вопросы

Что произойдёт, если я применю cat к видеофайлу?

Видео содержит заголовки, которые описывают кодек и структуру. Простое конкатенирование оставит заголовки между сегментами видео, и большинство видеоплееров посчитают файл повреждённым. Для видео используйте FFmpeg или специализированные инструменты для правильного склеивания.

Можно ли использовать cat с файлами из разных папок?

Да. Указывайте относительные или абсолютные пути: cat Desktop/file1.txt Photos/Photos.txt >> output.txt.

Что произойдёт, если в качестве output я укажу существующее имя?

  • > перезапишет существующий файл.
  • >> добавит в конец или создаст файл, если его не было.

Чтобы избежать риска, пишите в новый временный файл и проверяйте результат прежде чем заменять оригиналы.


Важно: cat отлично подходит для текстовых задач, но перед операцией убедитесь в формате и наличии бэкапов.

Сводка

  • cat — быстрый инструмент для просмотра и слияния текстовых файлов.
  • Используйте флаги (-n, -b, -s, -e, -t, -q) для контроля вывода.
  • Не применяйте cat для бинарных форматов без понимания форматов; для видео лучше ffmpeg.
  • Всегда делайте резервные копии и проверяйте кодировку перед объединением.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Обнаруживаемо другими в iOS: что это и как отключить
Конфиденциальность

Обнаруживаемо другими в iOS: что это и как отключить

Как бесплатно разместить fan-gate Facebook на Heroku
Веб-разработка

Как бесплатно разместить fan-gate Facebook на Heroku

Twitch PiP: как включить и смотреть
Руководство

Twitch PiP: как включить и смотреть

CSGO и высокая загрузка CPU — что делать
Игры

CSGO и высокая загрузка CPU — что делать

CS:GO не подключается к серверам — как исправить
Техподдержка игр

CS:GO не подключается к серверам — как исправить

Как начать продавать на Amazon — 12 ресурсов
Электронная коммерция

Как начать продавать на Amazon — 12 ресурсов