С чего начать Первые шаги трек · 15 ступеней
Linux Labs

cat — вывести файл целиком

4 мин Ubuntu 24.04 · GNU coreutils 9.4

Команда cat печатает содержимое файла в терминал и склеивает несколько файлов в один поток.

Шпаргалка

8 команд Версия для печати
  • cat /etc/hostname напечатать файл
  • cat -n app.conf с номерами строк
  • cat a.txt b.txt два файла подряд
  • cat a.txt b.txt > all.txt склеить в новый файл
  • cat -A file показать табы ^I, концы строк $, \r ^M
  • cat -s file схлопнуть повторяющиеся пустые строки
  • tac file строки в обратном порядке
  • sudo cat /etc/shadow файл, доступный только root

Обзор

cat (concatenate) читает файлы по очереди и печатает их в стандартный вывод. Чаще всего им смотрят короткий файл целиком:

text
student@ubuntu:~$ cat /etc/hostname
ubuntu
student@ubuntu:~$ cat -n /etc/hosts
     1	127.0.0.1 localhost
     2	127.0.1.1 ubuntu
     3
     4	# The following lines are desirable for IPv6 capable hosts

Второе назначение — склейка: cat part1 part2 > whole пишет оба файла в один. Без аргументов cat читает клавиатуру до Ctrl+D — так быстро создают маленький файл.

Длинный файл cat прокручивает мимо экрана целиком. Его листают в less, начало смотрят head, конец — tail.

Ключи

6

У cat мало ключей, и все они про вид вывода. Полный список — man cat.

Ключ Что делает Пример
-n Нумеровать все строки вывода. cat -n app.conf
-b Нумеровать только непустые строки. cat -b app.conf
-A Показать невидимое — табы как ^I, концы строк как $, \r как ^M. cat -A deploy.sh
-s Схлопнуть несколько пустых строк подряд в одну. cat -s notes.txt
-E Поставить $ в конце каждой строки — видно хвостовые пробелы. cat -E app.conf
-T Показать табы как ^I. cat -T Makefile

Ничего не найдено. Попробуй запрос короче.

Рецепты

4

Записать короткий файл без редактора

bash
cat > notes.txt <<'EOF'
первая строка
вторая строка
EOF

Кавычки вокруг EOF отключают подстановку: $HOME попадёт в файл как текст. > перезаписывает файл, >> дописывает в конец.

Найти невидимые символы

text
student@ubuntu:~$ cat -A deploy.sh
#!/bin/bash^M$
echo ok^M$

^M$ в конце строк — переводы строк Windows (\r\n). Из-за них сценарий падает с bad interpreter. Убрать: sed -i 's/\r$//' deploy.sh.

Склеить части и проверить результат

bash
cat backup.tar.part-* > backup.tar   # части по порядку имён
ls -l backup.tar                     # размер — сумма частей

Искать в файле без cat

cat file | grep error работает, но лишний процесс не нужен: grep читает файл сам — grep error file.

Неполадки

5

cat: /etc/shadow: Permission denied

Файл читает только root или группа. Посмотри права: ls -l /etc/shadow. Если доступ действительно нужен — sudo cat /etc/shadow.

Permission denied при sudo cat > /etc/файл

Перенаправление > выполняет твоя оболочка, без прав root, ещё до запуска sudo. Пиши через tee: echo '127.0.0.1 app' | sudo tee -a /etc/hosts — см. tee.

cat: /etc: Is a directory

Аргумент — каталог. Содержимое каталога показывает ls, файлы внутри ищет find.

После cat терминал печатает мусор

Ты вывел двоичный файл, и управляющие байты переключили терминал. Набери вслепую reset и Enter. Тип файла заранее покажет file имя — см. file.

Файл пролетел, видно только конец

cat не останавливается на каждом экране. Для чтения бери less файл, для последних строк — tail -n 50 файл.

Опасно

1

cat > файл стирает файл до чтения

cat a.txt > a.txt оставит пустой файл: оболочка обнуляет a.txt для записи до того, как cat начнёт читать, — и ошибки при этом нет. То же с любым > на существующий файл. Дописывай >> или пиши результат в новый файл, а потом переименуй его через mv.

См. также

  • less — листать длинный файл с поиском.
  • head — первые строки файла.
  • tail — последние строки и слежение за логом.
  • tee — записать вывод в файл с правами root.
  • grep — найти нужные строки вместо вывода всего файла.
  • files-basics — обзор базовых команд с файлами.
Загрузка…