Команда cat

Команда cat предназначена для задействования соответствующей утилиты, осуществляющей объединение (или связывание) содержимого нескольких файлов и его вывод с помощью стандартного потока вывода, но на практике она чаще всего используется для вывода (или отображения) содержимого отдельных файлов с помощью стандартного потока вывода, создания небольших текстовых файлов, а также использования терминала в качестве блокнота (благодаря возможности перенаправления потоков ввода/вывода).

Примеры использования

Просмотр содержимого нескольких файлов

Предположим, что у нас есть два файла с именами file1 и file2. Если нам понадобится просмотреть содержимое этих файлов, мы сможем воспользоваться следующей командой для отправки этого содержимого в стандартный поток вывода:

cat file1 file2

Эта команда позволяет вывести содержимое одного или нескольких файлов с помощью стандартного потока рассматриваемой вывода утилиты.

Объединение нескольких файлов

Если нам понадобится создать файл с именем file3 с содержимым файлов file1 и file2, мы сможем использовать следующую команду, задействующую механизм перенаправления потоков ввода/вывода командной оболочки:

cat file1 file2 > file3

Утилита cat сначала отправляет содержимое файла file1, затем — содержимое файла file2 в стандартный поток вывода, при этом символ > сообщает командной оболочке о том, что данные из стандартного потока вывода утилиты должны быть сохранены в файле с именем file3.

Простейший текстовый редактор

Мы можем использовать механизм перенаправления потоков ввода/вывода командной оболочки для запуска утилиты cat в режиме примитивного текстового редактора. Без каких-либо аргументов cat просто копирует строки из стандартного потока ввода в стандартный поток вывода. Если же мы перенаправим стандартный поток вывода в файл, все вводимые строки будут сохраняться в этом файле. Например, если нам нужно быстро создать скрытый файл конфигурации приложения, мы можем использовать утилиту cat следующим образом:

cat > .somefile

После этого нам останется ввести содержимое файла и воспользоваться сочетанием клавиш CTRL+D для закрытия редактора (UNIX-подобные операционные системы прекращают передачу данных в стандартный поток ввода утилит с интерфейсом командной строки после использования сочетания клавиш CTRL+D). Разумеется, такой текстовый редактор не будет практичным решением для ввода содержимого текстовых файлов большого объема, ведь в он позволяет редактировать лишь текущую строку и не позволяет осуществлять переход к предыдущим строкам для их редактирования.

Если же нам понадобится написать простую записку, содержимое которой не нужно сохранять в отдельном файле (например, для того, чтобы оставить ее на некоторое время в открытом окне терминала), без использования каких-либо дополнительных инструментов типа Post-it, мы можем перенаправить стандартный поток вывода рассматриваемой утилиты в файл устройства /dev/null, позволяющий отбросить все введенные строки (при этом они будут сохраняться лишь в окне терминала), следующим образом:

cat > /dev/null

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

cat > fillme.txt << EOF
Это первая строка
А это вторая строка
EOF

Запись дополнительных строк в файл

Как несложно догадаться, вы можете использовать как оператор > для перезаписи содержимого файла, так и оператор >> для добавления строк в файл:

cat >> file

Данная команда позволяет записать вводимые строки в файл с именем file.