Команда `cat` в Linux Эта команда читает, объединяет и записывает содержимое файлов в стандартный вывод. Используйте команду `cat file` для вывода содержимого файла, `cat file1 file2 > merged.txt` для объединения файлов, `cat -n` для нумерации строк и `cat >> notes.txt` для интерактивного добавления данных.
Это быстрая и незаменимая утилита для просмотра логов, быстрого редактирования и написания скриптов. Если вы изучаете основы Linux, команда `cat` — один из первых инструментов, который стоит освоить.
Это просто, быстро и доступно во всех дистрибутивах. В этом руководстве вы узнаете, что делает команда `cat`, как она работает, и найдете практические примеры, которые вы сможете использовать ежедневно, будь то на локальном компьютере или в виртуальной машине. SSH Сессия к производственному серверу.
Что такое команда `cat` в Linux?
Команда cat (конкатенация) читает файлы. и выводит их содержимое в стандартный поток вывода (ваш терминал).

Она также может объединять файлы.Команда `cat` позволяет создавать новые файлы из входных данных, добавлять содержимое и отображать скрытые символы. Благодаря своей скорости и повсеместному использованию, `cat` часто применяется в скриптах, конвейерах обработки данных и для быстрой проверки.
Базовый синтаксис:
cat [OPTIONS] [FILE...]
# If no FILE or FILE is -, cat reads from standard input (stdin)Наиболее часто используемые вами опции:
- -н: Пронумеруйте все выходные строки.
- -б: Пронумеруйте только непустые строки вывода.
- -с: Сжать (объединить) повторяющиеся пустые строки.
- -А: Отображать все непечатаемые символы (эквивалентно -vET).
- -Э: Показать, что строка заканчивается символом $.
- -Т: Символы табуляции отображаются как ^I.
Основные примеры команд для кошек
1) Просмотр содержимого файла
Вывести содержимое файла в терминал:
cat /etc/os-releaseЕсли файлов несколько, команда cat выводит их последовательно:
cat intro.txt chapter1.txt chapter2.txt2) Объединить файлы в новый файл
Объединить файлы в правильном порядке и записать в новый файл, используя перенаправление командной строки (>):
cat part1.log part2.log > full.logБудьте осторожны: символ > перезаписывает целевое местоположение. Используйте >> для добавления.
3) Интерактивное добавление данных в файл.
Начните сеанс простого добавления текста. Нажмите Ctrl+D (EOF), когда закончите:
cat >> notes.txt
Add a quick line to my notes.
Press Ctrl+D to save4) Числовые прямые
Пронумеруйте каждую строку (-n) или только непустые строки (-b):
# Number all lines
cat -n config.yaml
# Number non-empty lines
cat -b config.yaml5) Сожмите пустые строки и покажите скрытые символы.
Полезно для очистки выходных данных и отладки проблем с форматированием:
# Collapse multiple blank lines into a single blank line
cat -s README.md
# Show line endings ($) and tabs (^I)
cat -E Makefile
cat -T Makefile
# Show everything non-printing (tabs, EOL, special bytes)
cat -A somefile.txt6) Создайте файл из стандартного ввода (с клавиатуры) или конвейеров.
Создать файл из набранного текста:
cat > todo.txt
- Patch security updates
- Restart services
Ctrl+DСоздайте файл из вывода другой команды:
dmesg | grep -i nvme | cat > nvme-boot.log7) Копирование файла (простые случаи)
Хотя предпочтительнее использовать cp, cat подходит для быстрого копирования и потоковой передачи:
cat source.conf > backup.conf
cat access.log.* | cat > all-access.logДля больших файлов или сохранения атрибутов используйте cp или rsync.
Использование кошки с трубами: практические сценарии
Конвейеры связывают команду `cat` с другими командами для фильтрации, поиска или преобразования выходных данных. Это крайне важно, когда вы не читаете данные из файлов напрямую (например, из сетевых потоков, при подстановке процессов).
Быстрый поиск по журналам с помощью grep.
Если у вас уже есть поток данных, перенаправьте его в grep. Если вы читаете напрямую из файла, вызовите grep для файла без команды cat, чтобы избежать «бесполезного использования cat».
# Streamed input - cat is fine
journalctl -u nginx | cat | grep -i "error"
# Direct file - skip cat for efficiency
grep -i "error" /var/log/nginx/error.logПредварительный просмотр длинных файлов с помощью заголовков, концовок и less.
Заголовок и конец позволяют быстро получить краткие фрагменты информации. Для интерактивного просмотра лучше использовать меньше элементов.
# First 50 lines
cat bigfile.txt | head -n 50
# Last 100 lines, follow updates (great for logs)
tail -n 100 -f /var/log/syslog
# Interactive pager (prefer calling less directly)
less bigfile.txtПодсчитать, отсортировать и удалить дубликаты.
Комбинируйте команды для быстрого анализа данных:
# Count lines, words, and bytes
cat hosts.txt | wc
# Sort and remove duplicates
cat emails.txt | sort | uniq > unique-emails.txtБолее безопасное перенаправление: предотвращение случайной перезаписи.
Использование символа > немедленно перезаписывает файлы. Небольшая опечатка может привести к потере данных. Для большей безопасности:
- При добавлении данных предпочтительнее использовать оператор >>, а не перезапись.
- Включите параметр noclobber в вашей оболочке, чтобы блокировать перезапись: set -o noclobber (Bash).
- Используйте команду tee -a с правами суперпользователя (sudo), чтобы безопасно добавлять данные в файлы, принадлежащие пользователю root.
# Safer edits to root-owned files via sudo
echo "include /etc/nginx/conf.d/*.conf;" | sudo tee -a /etc/nginx/nginx.confПоказать концовки, табуляцию и непечатаемые символы.
Если ошибка в скрипте связана с форматированием, виновником могут быть невидимые символы. Используйте команду `cat` для их визуализации:
# Carriage returns (Windows CRLF) appear as ^M when using -A
cat -A script.sh
# Tabs and end-of-line markers
cat -T -E MakefileЕсли вы обнаружили проблемы с CRLF, выполните преобразование с помощью dos2unix или tr:
tr -d '\r' < script.sh > script_fixed.shРеальные примеры использования серверов
Для администраторов и разработчиков команда `cat` в Linux — это незаменимый инструмент. Вот реальные сценарии из производственных сред:
- Сортировка бревен: cat /var/log/nginx/access.log | grep 500 to spot ошибки сервера быстро.
- Снимки конфигурации: cat /etc/nginx/nginx.conf > nginx.conf.bak перед внесением изменений.
- Примечания к релизу: Используйте команду `cat VERSION CHANGELOG.md`, чтобы вывести версию и последние изменения в журналах CI.
- Обработка секретной информации: Используйте команду `cat .env | grep -v “SECRET=”`, чтобы избежать вывода конфиденциальных строк в конвейерах обработки данных.
- Отладка контейнера: kubectl logs pod | cat -n для нумерации строк для справки в тикетах.
На YouStable Linux VPS или выделенный сервер, SSH Доступ к команде cat предоставляется по умолчанию, поэтому вы можете использовать ее для просмотра логов, проверки конфигурации и автоматизации развертывания. Если вы масштабируете стек WordPress или SaaS, наши инженеры помогут вам усилить безопасность и осуществлять мониторинг вашей среды, где такие простые инструменты, как cat, остаются бесценными.
cat против less, more и tac: когда что использовать
- Кот: Быстрый вывод в стандартный поток вывода; идеально подходит для небольших/средних файлов, конвейеров обработки данных, конкатенации и написания скриптов.
- меньше: Интерактивная постраничная навигация для больших файлов; эффективный поиск, прокрутка и переходы между файлами.
- больше: Устаревший пейджер с меньшим количеством функций; как правило, чем меньше функций, тем лучше.
- так: Аналогично функции cat, но выводит содержимое файлов в обратном порядке строк, что полезно для отображения логов или в режиме "сначала самые новые".
# Reverse lines (newest first)
tac system.log | head -n 50Распространенные ошибки и лучшие практики
- Избегайте бесполезного использования кошки: При прямом чтении файлов предпочтительнее использовать команду `grep “term” file` вместо `cat file | grep “term”`.
- Будьте осторожны с перенаправлениями: > перезаписывает; используйте >> для добавления, tee -a для корневых файлов.
- Бинарные файлы: Команда `cat` может выдавать двоичный шум в ваш терминал; попробуйте использовать `hexdump -C` или `strings`.
- Большие файлы: Команда `cat huge.log` может перегрузить ваш терминал и снизить производительность; используйте `less`, `head` или `tail` с параметром `-f`.
- Права доступа: Сообщение «Доступ запрещен» указывает на недостаточные права доступа; попробуйте использовать команду sudo или проверьте списки контроля доступа (ACL) файлов.
Коды завершения, ошибки и производительность
Команда `cat` возвращает 0 в случае успеха. При возникновении ошибок (например, отсутствующих файлов, проблем с правами доступа) значение не равно нулю. При обработке нескольких файлов ошибки выводятся в стандартный поток ошибок, но обработка остальных файлов продолжается, что удобно в скриптах.
# Example: continue even if one file is missing
cat present.txt missing.txt another.txt > combined.txt
echo $?Что касается производительности, cat работает быстро и по умолчанию использует потоковую обработку. Тем не менее, для больших файлов предпочтительнее использовать less, а также избегать вывода двоичных данных в терминал. Если вам необходима обработка больших потоков, используйте pv в конвейерах.
# Show progress while concatenating big data
pv huge.iso.part* | cat > huge.isoРасширенные шаблоны: замена документов и процессов.
В документации Here легко создавать файлы со структурированным содержимым непосредственно из командной строки:
cat > docker-compose.yml <<'EOF'
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "80:80"
EOFПодстановка процессов позволяет обрабатывать вывод команд как файлы, а затем объединять их с помощью команды `cat:`.
cat <(curl -s https://example.com/api/status) /etc/hosts > merged.txtЧасто задаваемые вопросы
1. Что делает команда `cat` в Linux?
Команда `cat` читает файлы и записывает их содержимое в стандартный вывод. Она также может объединять несколько файлов, создавать новые файлы из входных данных, добавлять данные в существующие файлы и отображать непечатаемые символы для отладки проблем с форматированием.
2. Как использовать команду `cat` для создания файла или добавления в него данных?
Используйте команду `cat > file` для создания или перезаписи файла, затем введите содержимое и нажмите Ctrl+D для сохранения. Используйте команду `cat >> file` для добавления без перезаписи. Для файлов, принадлежащих root, предпочтительнее использовать команду `echo “line” | sudo tee -a file`.
3. Как пронумеровать ряды с помощью кошки?
Используйте команду `cat -n` для нумерации всех строк или `cat -b` для нумерации только непустых строк. Это полезно при ссылке на конкретные строки в логах или конфигурационных файлах.
4. Почему говорят: «Не используйте cat с grep»?
При чтении непосредственно из файла команда `grep “term” file` более эффективна, чем `cat file | grep “term”`. Однако команда `cat` уместна, когда на вход поступает поток данных, когда объединяется несколько потоков или когда важна читаемость в сложных конвейерах обработки данных.
5. Как отобразить скрытые символы, такие как табуляция или CRLF?
Используйте команду `cat -A` для отображения непечатаемых символов, `cat -T` для отображения табуляции как `^I` и `cat -E` для обозначения символов конца строки `$`. Если вы видите `^M`, преобразуйте `CRLF` с помощью `dos2unix` или `tr -d '\r'`.
Заключение
В Linux команда `cat` — это... Основа производительности командной оболочки. От быстрого просмотра файлов и слияния до безопасного перенаправления, отладки невидимых символов и управления конвейерами — cat помогает вам работать быстрее с меньшим количеством инструментов. Практикуйтесь на примерах выше, и вы сможете уверенно работать с логами, конфигурациями и скриптами на любом сервере Linux.