Команда 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:
Вернемся к просмотру текстовых файлов. Если файл велик и не умещается на одном экране, то следует применить программный канал (pipe) с командой less:
$ cat текстовой.файл | less
вывод команды cat будет передан на ввод команде less, которая позволяет тексту заполнить только один экран. Чтобы прочесть следующую порцию текста, нужно нажать клавишу пробела, а чтобы вернуться к предыдущей порции - клавишу b. Прервать работу программы можно клавишей q.
Но не все знают, что, при просмотре файлов, доступны опции команды cat.
Опция -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 в командной строке.
Опции --help и --version общеизвестны и не нуждаются в пояснении.
Объединение файлов
Вторая функция команды cat - объединение содержимого нескольких файлов. Это свойство команды менее известно, хотя именно ему команда обязана своим названием (объединение по-английски concatenation).
$ cat masha mama
Маша мыла раму
Мама мыла Машу
В приведенном примере первая строка - содержимое файла masha, а вторая - файла mama.
find . -type f -name "cdr*" -print0 | sort -z | xargs -0 cat > 222.txt
ОтветитьУдалить