Что делает команда 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
Запишем содержимое двух документов в один.
<code">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. добавляет символа $.