оригинал статьи: http://rus-linux.net/lib.php?name=/MyLDP/consol/HuMan/cat-ru.html
Команда cat, без сомнения, одна из самых употребительных. С ее помощью просматривают содержимое текстовых файлов. Но не все знают о еще двух "способностях" этой команды: комбинировать и объединять копии файлов и создавать новые файлы.
Наше невежество простирается и на само название этой команды: по-русски оно всеми произносится как "кат", хотя по-английски оно звучит как "кэт", так же как кошка. Из-за этого в англоговорящем мире название команды считается не интуитивным (хотя происходит от слова concatenatе - объединять) и вызывает множество шуток и нареканий. Кстати говоря, русскому произношению "кат" соответствует команда cut, служащая совсем для других целей.
Если набрать в командной строке слово 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?U\8???}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.
Опции -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 нумерует непустые строки:
$ 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, помимо общеизвестной функции просмотра текстовых файлов, "умеет" еще многое, о чем полезно знать.