Что делает команда cat в Linux?

Команда cat - одна из популярных утилит операционной системы Линукс. ЕЕ часто используют опытные пользователи из командной строки. Ведь самый мощный инструмент ОС Linux - терминал. Из него можно выполнить большинство задач. Такие как:

  • создание, удаление файлов;
  • сменить пароль пользователя;
  • запретить доступ к интернету;
  • запретить доступ к каталогу;
  • установить и удалить программу;
  • перезагрузить компьютер;
  • настройка файрвола iptables;
  • проброс портов;
  • установить графическую оболочку;
  • права доступа;
  • и многое другое.

Название cat происходит от слова "catenate". Позволяет вывести на экран  содержимое в качестве аргумента файла. Например, необходимо посмотреть содержимое test.

Описание

Рассмотрим синтаксис.

cat аргументы файл1 файл2

Посмотрим, что говорит справка. Выполним cat --help.

Справка catenate

Справка --help

Основные параметры утилиты:

-A. Показывает в конце строки $.

-b. Утилита нумерует строки начиная с 1. При этом пустые, не нумеруется.

-e. В конце строки показывает $.

-n. Нумерует все строки, включая пустые.

-s. Не показывает повторные пустые строки.

-T. Показывать табуляцию.

Примеры

Рассмотрим простой пример. Нужно узнать имя компьютера. Для этого считаем файл hostname.

cat /etc/hostname
Читаем имя компьютера

Читаем имя компьютера

Как видим выше на скриншоте, команда просто прочитала текст и показала его на экране. В нашем случае имя компьютера это debian.

сat -n /home/user/file
Ключ -n

Результат выполнения с ключом -n

ВАЖНО! Опция -n нумерует все строки, в том числе пустые.

Как создать файл с помощью cat?

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

Перенаправление означает, что утилита перенаправит стандартный вывод на экран в то что укажет пользователь символом >, в устройство или файл.

Считаем документ "file" и перенаправим результат вывода в "file2". В итоге у нас на экране не покажется содержимое документа, а результат запишется в новый файл "file2".

cat /home/file > /home/file2

Перенаправление в документ

Добавим в конец документа test содержимое test2.

cat test2 >> test

Запишем содержимое двух документов в один.

cat file file2 >file3

Перенаправление стандартного вывода

Работа с большими файлами, где очень много комментариев не удобно. Популярная задача в операционной системе Linux - убрать комментарии из конфига.

Обычно такую задачу решают двумя действиями:

  1. Делаем копию оригинального конфига, помечаем его как-нибудь "orig".
  2. Перенаправляем вывод используя дополнительный фильт. Чтобы в конфиг не попали записи с комментриями #.

Примером такого конфига может быть samba, smb.conf.

cp smb.conf smb.conf.orig
cat smb.conf.orig | egrep "^[^#]" > smb.conf

Добавление знака $.

В операционной системе Linux знак доллара в конце строчки, означает что команда будет выполнена без root прав. Бывает, что нужно добавить символ "$" в конец всех строк документа, для этого нам поможет опция -e.

cat -e script

В итоге можно сказать, что популярная утилита имеет три основных функции:

  1. выводит на экран текст;
  2. перенаправляет стандартный вывод;
  3. добавляет символа $.