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

Содержание
- Основной синтаксис команды cat
- Флаги команды cat и примеры
- Практические сценарии использования
- Когда cat не подходит
- Пошаговая инструкция (SOP) для безопасного объединения файлов
- Критерии приёмки
- Чеклисты по ролям
- Частые вопросы
Основной синтаксис команды cat
Основной формат записи:
cat file1 file2 file3 > outputcat читает файлы по порядку и отправляет их содержимое в стандартный вывод (stdout). Символы перенаправления > и >> управляют тем, как сохранять результат:
>— перезаписывает или создаёт файл output.>>— дописывает в конец файла или создаёт его, если он не существует.
Порядок файлов в команде определяет порядок их содержания в результате: содержимое file1 идёт перед file2 и т.д. Количество объединяемых файлов ограничено только доступным местом на диске и ограничениями файловой системы.
Пример для JSON-файлов:
cat file1.json file2.json > combined_file.jsonЕсли опустить часть с перенаправлением, cat выведет содержимое в терминал:
cat file1.txt file2.txtЭто удобно для быстрого просмотра. Для крупных файлов лучше использовать less или more.

Важно: 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.txtcat нумерует строки в непрерывном счёте при последовательном объединении нескольких файлов: если первый файл закончился номером 33, следующий начнёт с 34.

Совет: перед объединением больших файлов сравните их с помощью diff, чтобы не дублировать содержимое.
Флаг -b — нумерация только непустых строк
Когда в файле много пустых строк для форматирования, -b полезнее, так как нумерует только строки с текстом:
cat -b file1.txtЕсли вы используете одновременно -b и -n, приоритет получит -b — пустые строки не будут нумероваться.

Флаг -s — сжатие пустых строк
-s сокращает две и более подряд идущих пустых строк до одной, улучшая читаемость:
cat -s file2.txtЕсли между заполненными строками одна пустая строка, она останется; -s действует только при двух и более подряд пустых строк.

Флаг -e — показать конец строки
-e добавляет символ $ в конец каждой строки, что помогает при поиске скрытых пробелов и при работе с регулярными выражениями:
cat -e file1.txtФлаг добавляет $ и в пустые строки, поэтому его часто полезно сочетать с -s.

Флаг -t — отображение табуляции
-t заменяет символ табуляции на визуальное ^I. Это позволяет отличить табы от последовательности пробелов:
cat -t file1.txt > file2.txtЕсли комбинировать -t с -n или -b, нумерация действует отдельно — пробелы остаются пробелами, а табы отображаются как ^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 не подходит
Бинарные файлы (видео, изображения, архивы): такие файлы содержат заголовки и служебные блоки. Простое конкатенирование приведёт к повреждению формата и проблемам при воспроизведении. Для видео используйте FFmpeg; для архивов — tar/zip с поддержкой многотомности.
Обработка больших файлов, превышающих объём доступной оперативной памяти: для потоковой обработки применяйте инструменты вроде
awk,sed,splitиpv.Если требуется сложная агрегация по строкам или полям (слияние по ключу) — используйте
join,awk,pythonили специализированные ETL-инструменты.
Пошаговая инструкция (SOP) для безопасного объединения файлов
Важно следовать простым шагам, чтобы не потерять данные:
- Оцените формат файлов (текст/бинарный). Если бинарный — не используйте cat для конкатенации.
- Сделайте резервную копию входных файлов или целевого каталога.
- Проверьте кодировку и окончания строк (UTF-8, CRLF vs LF). Смешанные кодировки приводят к некорректному отображению.
- Сравните файлы:
diff file1 file2. - Объедините в новый файл:
cat file1 file2 > result.txt— избегайте перезаписи одного из входных файлов. - Проверьте результат:
wc -l result.txtи быстрый просмотрhead/tail. - Если всё верно, при необходимости переименуйте или переместите.
Короткая команда для безопасного объединения:
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.
- Всегда делайте резервные копии и проверяйте кодировку перед объединением.
Похожие материалы
Обнаруживаемо другими в iOS: что это и как отключить
Как бесплатно разместить fan-gate Facebook на Heroku
Twitch PiP: как включить и смотреть
CSGO и высокая загрузка CPU — что делать
CS:GO не подключается к серверам — как исправить