cat – просто и по русски о всем знакомой команде

Алексей Дмитриев, 17апреля 2009

Статья из серии HuMan
Команда cat, без сомнения, одна из самых употребительных. С ее помощью просматривают содержимое текстовых файлов. Но не все знают о еще двух “способностях” этой команды: комбинировать и объединять копии файлов и создавать новые файлы.

Наше невежество простирается и на само название этой команды: по-русски оно всеми произносится как “кат”, хотя по-английски оно звучит как “кэт”, так же как кошка. Из-за этого в англоговорящем мире название команды считается не интуитивным (хотя происходит от слова concatenatе – объединять) и вызывает множество шуток и нареканий. Кстати говоря, русскому произношению “кат” соответствует команда cut, служащая совсем для других целей.
Команда cat без аргументов
Если набрать в командной строке слово cat и нажать клавишу ENTER, то можно набирать текст и видеть его на экране монитора. Повторное нажатие клавиши ENTER удваивает строку и позволяет начать следующую. Когда текст набран, следует одновременно нажать клавиши CTRL и d.

$ cat                (ENTER)

Эта команда          (ENTER)
Эта команда
выводит текст        (ENTER)
выводит текст
на стандартный вывод (ENTER)
на стандартный вывод (ENTER  CTRL-d)

Удвоение происходит из-за того, что первую строку вводит пользователь, а копирует ее на стандартный вывод команда cat. Если переадресовать стандартный вывод в файл f1, то никакого удвоения не произойдет, зато в рабочей директории появится новый файл с набранным текстом:

$ cat > f1

Эта команда
выводит текст
и пишет его в файл

Просмотр файлов
Всем известно применение команды cat для просмотра текстовых файлов:

$ cat f1

Эта команда
выводит текст
и пишет его в файл

Но если “попросить” команду прочесть нетекстовой файл, то программа выполнит эту просьбу. Правда толку от этого немного, вот, например, как выглядит небольшой кусок графического файла, открытого при помощи команды cat:

$ cat mopslinux.png

?PNG

IHDR*?? ?pHYs

??▒
MiCCPPhotoshop ICC profilex?SwX?>??eVB????l?”#Y??a?@??
V?HU?
?H????(?gA??Z?U8???}z????????????y?&???j9R?<:?OH???H? ???gyx~t????op?.$?????P&W ??”
?R?.T?▒?S?d
??I>??????(G$@?`U?R,? ?@”.??Y?2G??v?X?@`??B,? 8C L?0???_p??H???K?3??▒?w????!??l?

Вернемся к просмотру текстовых файлов. Если файл велик и не умещается на одном экране, то следует применить программный канал (pipe) с командой less:

$ cat текстовой.файл | less

вывод команды cat будет передан на ввод команде less, которая позволяет тексту заполнить только один экран. Чтобы прочесть следующую порцию текста, нужно нажать клавишу пробела, а чтобы вернуться к предыдущей порции – клавишу b. Прервать работу программы можно клавишей q.

Но не все знают, что, при просмотре файлов, доступны опции команды cat.
Опции команды cat
Опции -A -E -e -T -t -v показывают невидимые (непечатаемые) символы текста.

Опция -A показывает все невидимые символы. Вот как выглядит текст, прочитанный с данной опцией:

$ cat -A text1

^IThe most common use of cat$
is to read the contents of files,$
and cat is often the most convenient program for this purpose.$
$
^IAll that is necessary to open a text file$
for viewing on the display monitor is to type the word cat.

^I обозначает символ табуляции, $ – символ конца строки.

Опция -E показывает символы конца строки.

Опция -e показывает непечатаемые символы плюс символ конца строки

Опция -T показывает символ табуляции

Опция -t показывает непечатаемые символы плюс символ табуляции

Опция -v показывает непечатаемые символы кроме табуляции и конца строки.

С кириллическими символами все эти опции выводят какую-то абракадабру:

$ cat -A

команда cat
M-PM-:M-PM->M-PM-<M-PM-0M-PM-=M-PM-4M-PM-0 cat$

Опции -b и -n нумеруют строки вывода.
-b нумерует непустые строки:

$ cat -b text2
1  Команда cat применяется для просмотра текстовых файлов,
2  и зачастую является наиболее удобным инструментом для этого.

3  Все что нужно сделать для открытия файла,
4  это набрать слово cat в командной строке.

-n нумерует все строки:

$ cat -n text2
1  Команда cat применяется для просмотра текстовых файлов,
2  и зачастую является наиболее удобным инструментом для этого.
3
4  Все что нужно сделать для открытия файла,
5  это набрать слово cat в командной строке.

Опция -s подавляет вывод повторяющихся пустых строк.
Опции –help и –version общеизвестны и не нуждаются в пояснении.
Объединение файлов
Вторая функция команды cat – объединение содержимого нескольких файлов. Это свойство команды менее известно, хотя именно ему команда обязана своим названием (объединение по-английски concatenation).

$ cat masha mama

Маша мыла раму
Мама мыла Машу

В приведенном примере первая строка – содержимое файла masha, а вторая – файла mama.

Можно переадресовать вывод команды в новый файл:

$ cat masha mama > mamasha

Заметим, что исходные файлы masha и mama остались неизменными, объединены в файле mamasha только их копии.

Подобным образом можно объединять любое количество файлов, а также “попутно” пропустить их через какую-либо команду-фильтр, скажем, sort:

$ cat file1 file2 file3 | sort > file4

и получим отсортированное по алфавиту содержимое трех файлов.
Создание новых файлов
Самый простой способ создать новый пустой файл:

$ cat > blank.file   (ENTER  CTRL-d)

файл blank.file появится в рабочей директории.

Можно создавать файл сразу с текстом:

$ cat > file8 (ENTER)

Приглашаю Вас на бал и моем дворце. (ENTER  CTRL-d)

Можно и добавлять новый текст:

$ cat – file8 > file9  (ENTER)

Уважаемая госпожа Сидорова!  (ENTER  CTRL-d)

Прочерк ставится перед именем файла, если нужно вписать в начало файла, и после имени файла, если нужно вписать в конец.

Вот результат:

$  cat file9

Уважаемая госпожа Сидорова!
Приглашаю Вас на бал и моем дворце.

Резюме
Команда cat, помимо общеизвестной функции просмотра текстовых файлов, “умеет” еще многое, о чем полезно знать.

Добавить комментарий

Войти с помощью: