3.2/5 - (9 голосов)

Прежде чем мы начнём углубляться в тему статьи, мы должны войти в VPS через SSH и быстро проверить основной синтаксис. Команда принимает имя файла в качестве аргумента вместе с опциями, уточняющими отдельные операции.

Чтобы найти все доступные опции, просто введите cat –help в терминале.

Оглавление

Подготовительные действия

Сначала хотелось бы уделить время предварительным действиям, поскольку не все юзеры знакомы с принципом работы консоли. Дело в том, что при открытии файла требуется либо указывать точный путь к нему, либо производить запуск команды, находясь непосредственно в самой директории через «Терминал». Поэтому мы советуем для начала просмотреть такое руководство:

  1. Запустите файловый менеджер и перейдите в ту папку, где хранятся необходимые файлы.
  2. Нажмите на одном из них правой кнопкой мыши и выберите пункт «Свойства».
  3. Во вкладке «Основные» ознакомьтесь с информацией по поводу родительской папки. Запомните этот путь, ведь он пригодится далее.
  4. Запустите «Терминал» через меню или комбинацию клавиш Ctrl + Alt + T.
  5. Пропишите команду cd /home/user/folder, где user — имя пользователя, а folder — папка, где хранятся объекты. За перемещение по пути отвечает стандартная команда cd.

Таким методом осуществляется переход к определенной директории через стандартную консоль. Дальнейшие действия также будут производиться через эту папку.

Просмотр содержимого

Одна из основных функций упомянутой команды — просмотр содержимого различных файлов. Вся информация отображается отдельными строками в «Терминале», а применение cat выглядит так:

  1. В консоли введите cat testfile, где testfile — имя необходимого файла, а затем нажмите на клавишу Enter.
  2. Ознакомьтесь с содержимым объекта.
  3. Вы можете открыть сразу несколько файлов, для этого потребуется указать все их названия, например, cat testfile testfile1.
  4. Строки будут совмещены и отобразятся одним целым.

Вот так работает cat без применения доступных аргументов. Если же вы просто пропишите в «Терминале»cat, то получите некое подобие консольного блокнота с возможностью записывать нужное количество строк и сохранять их нажатием на Ctrl + D.

Нумерация строк

Сейчас давайте затронем рассматриваемую команду с применением различных аргументов. Начать следует с нумерации строк, а за это отвечает -b.

  1. В консоли напишите cat -b testfile, где testfile — название нужного объекта.
  2. Как видите, были пронумерованы все присутствующие не пустые строки.
  3. Вы можете использовать этот аргумент с выводом нескольких файлов, как это было показано выше. В таком случае нумерация будет продолжаться.
  4. Если есть желание пронумеровать все строки, включая пустые, придется задействовать аргумент -n, и тогда команда приобретает вид: cat -n testfile.

Удаление повторяющихся пустых строк

Случается так, что в одном документе присутствует множество пустых строк, возникших каким-либо образом. Вручную удалять их через редактор не всегда удобно, поэтому здесь тоже можно обратиться к команде cat, применив аргумент -s. Тогда строка приобретает вид cat -s testfile (доступно перечисление нескольких файлов).

Добавление знака $

В операционной системе Linux знак доллара в конце строчки, означает что команда будет выполнена без root прав. Бывает, что нужно добавить символ “$” в конец всех строк документа, для этого нам поможет опция -e.
cat -e script

Небольшой вывод

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

  1. выводит на экран текст;
  2. перенаправляет стандартный вывод;
  3. добавляет символа $.

Отображение текстовых файлов

Простейший способ использования cat – задать команде имя файла. Содержимое текстового файла будет выведено на экран. Например, следующая команда прочитает содержимое файла mytext.txt и выведет его в стандартный поток вывода (экран вашего терминала):
cat mytext.txt

Если файл слишком длинный, он пролистается, и вы увидите только последний экран. При необходимости просмотреть документ постранично или прокручивать его вперёд и назад можно воспользоваться такими средствами просмотра как pg, more или less.

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

cat mytext.txt mytext2.txt

Создание нового файла с помощью cat

<текстареа wrap=”soft” class=”crayon-plain print-no” data-settings=”dblclick” readonly=”” style=”-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 21px !important;”> [hc@host ~]# cat > new_file это новый файл

1234 [hc@host~]# cat > new_file это новый файл

С помощью cat и символа > мы перенаправили стандартный вывод в файл new_file. Для завершения заполнения файла данными перейдите на новую строку и нажмите Ctrl+D.

Просмотр файлов с помощью cat в Linux

Для просмотра файла просто наберите:
#cat <имя_файла> <текстареа wrap=”soft” class=”crayon-plain print-no” data-settings=”dblclick” readonly=”” style=”-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 21px !important;”> [hc@host ~]# cat new_file это новый файл

1234 [hc@host~]# cat new_file это новый файл

Можно вывести с номерами строк:

<текстареа wrap=”soft” class=”crayon-plain print-no” data-settings=”dblclick” readonly=”” style=”-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 21px !important;”> [hc@host ~]# cat -n new_file 1 это 2 новый 3 файл

1234 [hc@host~]# cat -n new_file     1  это     2  новый     3  файл

Можно просмотреть содержимое нескольких файлов.

<текстареа wrap=”soft” class=”crayon-plain print-no” data-settings=”dblclick” readonly=”” style=”-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 21px !important;”> [hc@host ~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Это старый файл

12345 [hc@host~]# cat -n new_file old_file     1  это     2  новый     3  файл     4  Этостарыйфайл

Обратите внимание, что содержимое выводится единым массивом данных, что хорошо видно по тому, что содержание второго файла вывелось строкой под номером 4 – нумерация не началась заново при выводе этого файла. Т.е. cat, как это и заложено в ее названии, склеила файлы.

Редирект Контента с Помощью Команды Cat

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

cat ishodnyifail.txt > failnaznachenija.txt

Если файл назначения не существует, команда создаст его или перезапишет существующий с таким же именем.

Чтобы добавить содержимое в файл назначения, используйте опцию >>:

cat ishodnyifail.txt >> failnaznachenija.txt

Конкатенация («Склеивание») Файлов с Помощью Команды Cat

Команда cat также позволяет объединять несколько файлов в один. По сути это работает так же, как и функция перенаправления выше, но с несколькими исходными файлами.

cat ishodnyifail1.txt ishodnyifail2.txt > failnaznachenija.txt

Как и ранее, приведенная выше команда создаст файл назначения, если он не существует, или перезапишет существующий файл с таким же именем.

Обозначение Конца Строки Командой Cat

С помощью команды cat также можно обозначить конец строки. Маркер конца строки — символ $. Чтобы реализовать эту функцию, используйте параметр -E:

cat -E imiafaila.txt

Нумерация Строк с Помощью Команды Cat в Linux

Эта команда также позволяет отобразить содержимое файла с пронумерованными строками. Реализует эту функцию опция  -n:

cat -n imiafaila.txt

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

Вместо перезаписи файла можно присоединить текст файла-источника к другому файлу при помощи оператора перенаправления «>>».
Например, команда:

cat mytext.txt >> another-text-file.txt

Прочтет содержимое mytext.txt и запишет его в конец файла another-text-file.txt. Если этот файл не существует, он будет создан, и содержимое mytext.txt будет записано в новый файл.
Это работает также для нескольких файлов. Следующая команда последовательно запишет содержимое mytext.txt и mytext2.txt в конец файла another-text-file.txt:

cat mytext.txt mytext2.txt >> another-text-file.txt

Добавление стандартного ввода в вывод cat

Если в качестве имени файла задать дефис («-«), cat осуществляет считывание из стандартного потока ввода. Например, если у вас есть файл list.txt со следующим текстом:

яблоки
апельсины
масло
хлеб

вы можете воспользоваться командой echo для вывода текста, направить этот текст команде cat и указать ей объединить его с содержимым файла:

echo “Мой список покупок” | cat – list.txt

На выходе получим следующий текст:

Мой список покупок
яблоки
апельсины
масло
хлеб

Основные параметры команды cat

После того, как вы поиграли с различными форматами двоичных файлов, вернемся к простым старым текстовым файлам, изучив пару опций, специально предназначенных для работы с этими файлами. Несмотря на то, что они не являются частью стандарта POSIX, эти параметры являются переносимыми по версиям BSD и GNU для cat. Обратите внимание: мы не претендуем на то, что мы здесь разберем все моменты, поэтому проверьте страницу man, чтобы увидеть полный список опций, поддерживаемых вашей системой команду cat!

-n: числовые строки

С помощью опции n команда cat префикс каждой выходной строки по номеру строки:

cat -n andreyex.txt 1 2 andreyex andreyex n. 3 a natural family of lithe-bodied round-headed fissiped 4 mammals, including the cats; wildcats; lions; leopards; 5 cheetahs; and saber-toothed tigers. 6 7 Syn: family {andreyex}. 8 [WordNet 1.5] 9

В параметр -n число выходных линий. Это означает, что счетчик не сбрасывается при переходе от одного входного файла в другой, как вы увидите это, если вы попробовали самостоятельно следующую команду:

cat -n feli*.txt

-s: подавление повторяющихся пустых выходных строк

С помощью опции -s команда cat сбрасывает несколько последовательных пустых строк:

cat -n ubuntu.txt andreyex.txt | sed -n 8,13p 8 lynx ({ubuntu lynx}) is also called {Lynx lynx}. 9 [1913 Webster +PJC] 10 11 12 andreyex andreyex n. 13 a natural family of lithe-bodied round-headed fissiped sylvain@bulbizarre:~$ cat -ns ubuntu.txt andreyex.txt | sed -n 8,13p 8 lynx ({ubuntu lynx}) is also called {Lynx lynx}. 9 [1913 Webster +PJC] 10 11 andreyex andreyex n. 12 a natural family of lithe-bodied round-headed fissiped 13 mammals, including the cats; wildcats; lions; leopards;

В приведенном выше примере вы можете увидеть, что в выводе по умолчанию строки 10 и 11 были пустыми. При добавлении опции -s вторая пустая строка была отброшена.

-b: число только непустые строки

Несколько связанный с двумя предыдущими вариантами, опция -b будет содержать строки, игнорируя пустые:

$ cat -b andreyex.txt | cat -n 1 2 1 andreyex andreyex n. 3 2 a natural family of lithe-bodied round-headed fissiped 4 3 mammals, including the cats; wildcats; lions; leopards; 5 4 cheetahs; and saber-toothed tigers. 6 5 7 6 Syn: family {andreyex}. 8 7 [WordNet 1.5] 9

В приведенном выше примере используются два экземпляра команды cat с различными параметрами в контейнере. Внутренняя нумерация происходит с помощью опции -b, используемой с первой командой cat. Внешняя нумерация исходит с помощью опции -n, используемой со второй командой cat.

Как вы можете увидеть, первая и последняя строки не были пронумерованы опцией -b, потому что они пусты. Но как насчет 6-й линии? Почему она по-прежнему нумеруется с опцией -b? Ну, потому что это строка заполненная пробелами, но не пустая, как мы увидим в следующем разделе.

-v,,-e, -t: Отображение непечатаемых символов

Три варианта,-v, -e `, and `-t которые используются для отображения различных наборов невидимых символов. Даже если наборы перекрываются, нет опции «catch-all», поэтому вам придется комбинировать их, если вы хотите отображать все невидимые символы.

-v: просмотр невидимых символов

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

С помощью этой опции управляющие символы будут отображаться как каретка ( ^), за которыми следует соответствующий символ ASCII (например, возврат каретки, 13 байт отображается так, ^M как M в ASCII – 64 + 13), а символы с набором бит высокого порядка появится в «мета» описании M- за которой следует представление, соответствующее 7 младшим битам (например, байт 141 будет отображаться так, M-^M как 141 – 128 + 13).

Хотя, казалось бы, эзотерическая, эта функция может быть полезна при работе с двоичными файлами, например, если вы хотите изучить необработанную информацию, встроенную в файл JPEG:

$ cat -v cat.jpg | fold -75 | head -10 M-^?M-XM-^?M-`^@^PJFIF^@^A^A^A^@H^@H^@^@M-^?M-~^@QFile source: http://commo ns.wikimedia.org/wiki/File:Felis_catus-cat_on_snow.jpgM-^?M-b^LXICC_PROFILE ^@^A^A^@^@^LHLino^B^P^@^@mntrRGB XYZ ^GM-N^@^B^@ ^@^F^@1^@^@acspMSFT ^@^@^@^@IEC sRGB^@^@^@^@^@^@^@^@^@^@^@^@^@^@M-vM-V^@^A^@^@^@^@M-S-HP ^@^@^ @^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^Qcprt^@^@^AP^@^@^@3desc^@^@^AM-^D^@^@^@lwtpt^@^@^AM-p^@^@^@^ Tbkpt^@^@^B^D^@^@^@^TrXYZ^@^@^B^X^@^@^@^TgXYZ^@^@^B,^@^@^@^TbXYZ^@^@^B@^@^@ ^@^Tdmnd^@^@^BT^@^@^@pdmdd^@^@^BM-D^@^@^@M-^Hvued^@^@^CL^@^@^@M-^Fview^@^@^ CM-T^@^@^@$lumi^@^@^CM-x^@^@^@^Tmeas^@^@^D^L^@^@^@$tech^@^@^D0^@^@^@^LrTRC^ @^@^D<^@^@^H^LgTRC^@^@^D<^@^@^H^LbTRC^@^@^D<^@^@^H^Ltext^@^@^@^@Copyright (

Другим вариантом использования этого параметра -v является поиск управляющих символов, которые могли бы просочиться в текстовый файл. Если вы запомнили это, у нас есть эта странная проблема выше с вариантом,-b, обозначающим 6-ю строку ввода, тогда как она выглядела пустой. Итак, давайте расследуем следующее:

$ cat -v andreyex.txt andreyex andreyex n.^M a natural family of lithe-bodied round-headed fissiped^M mammals, including the cats; wildcats; lions; leopards;^M cheetahs; and saber-toothed tigers.^M ^M Syn: family {andreyex}.^M [WordNet 1.5]^M

Ах ах! Вы видите эти знаки ^M? Они используются для замены символа обратной невидимой каретки. Откуда это? Ну, протокол,dict, как и любой другой интернет-протокол, использует CRLF в качестве терминатора линии. Поэтому мы загрузили их как часть наших образцовых файлов. Но пока это объясняет, почему cat считает, что 6-я строка не пуста.

-e: отображение невидимых символов, включая конец строки

Опция -e работает с опцией -v, только будет  добавить знак доллара ($) перед каждым символом перевода строки, тем самым явно показывая конец линии:

$ cat -e andreyex.txt $ andreyex andreyex n.^M$ a natural family of lithe-bodied round-headed fissiped^M$ mammals, including the cats; wildcats; lions; leopards;^M$ cheetahs; and saber-toothed tigers.^M$ ^M$ Syn: family {andreyex}.^M$ [WordNet 1.5]^M$ $

-t: отображение невидимых символов, включая вкладки

Опция -t работает как вариант -v, за исключением того, что будет также отображать табличные данные с помощью курсора ^I (закладка хранится в виде байта удержания значение 9, а I в ASCII составляет 64 + 9 = 73):

$ cat -t andreyex.txt andreyex andreyex n.^M ^Ia natural family of lithe-bodied round-headed fissiped^M ^Imammals, including the cats; wildcats; lions; leopards;^M ^Icheetahs; and saber-toothed tigers.^M ^M ^ISyn: family {andreyex}.^M ^I^I [WordNet 1.5]^M

-et: показать все скрытые символы

Как мы уже говорили кратко, если вы хотите отобразить все непечатаемые символы, в том числе таблицы и маркеры конца строки, вам нужно будет использовать варианты -e и -t:

$ cat -et andreyex.txt $ andreyex andreyex n.^M$ ^Ia natural family of lithe-bodied round-headed fissiped^M$ ^Imammals, including the cats; wildcats; lions; leopards;^M$ ^Icheetahs; and saber-toothed tigers.^M$ ^M$ ^ISyn: family {andreyex}.^M$ ^I^I [WordNet 1.5]^M$ $

Копирование текстового файла

Обычно копирование осуществляется командой cp, но для копирования текстовых файлов вы можете аналогичным образом использовать команду cat. cat отправляет результат в stdout (стандартный поток вывода), обычно это экран терминала. Однако, можно перенаправить результат в файл при помощи символа перенаправления “>”.

Например, команда:

cat mytext.txt > newfile.txt

считает содержимое mytext.txt и отправить его в стандартный поток вывода, но вместо отображения текста оболочка перенаправит результат в файл newfile.txt. Если этот файл не существует, он будет создан. Если он будет же существует, то будет перезаписантс потерей предыдущего содержимого, поэтому будьте осторожны.

Аналогично можно объединять несколько файлов в один. Например, команда

cat mytext.txt mytext2.txt > newfile.txt

считает содержимое mytext.txt и mytext2.txt и запишет объединенный текст в newfile.txt. При отсутствии файла он будет создан, при наличии — перезаписан.

Удаление Пустых Строк

Чтобы удалить пустые повторяющиеся строки и сэкономить место на дисплее, вы можете применить опцию -s. Но имейте в виду, что этот параметр удалит только повторяющиеся пустые строки, оставив одну пустую строку.

cat -s imiafaila.txt

Нумерация Непустых Строк с Помощью Команды Cat в Linux

Чтобы вывести номер каждой строки, не учитывая пустых,  используйте опцию -b. Но помните, что параметр -b отменяет опцию -n:

cat -b imiafaila.txt

Отображение Файла в Обратном Порядке

Чтобы просмотреть содержимое файла в обратном порядке, начиная с последней строки и заканчивая первой, просто используйте команду tac (команду cat, написанную задом наперёд):

tac imiafaila.txt

Примеры

Рассмотрим простой пример. Нужно узнать имя компьютера. Для этого, считаем файл hostname.
cat /etc/hostname

Читаем имя компьютера

Как видим выше на скриншоте, команда просто прочитала текст и показала его на экране. В нашем случае имя компьютера это debian.
сat -n /home/user/file

Результат выполнения с ключом -n

ВАЖНО! Опция -n нумерует все строки, в том числе пустые.

Заключение

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

[spoiler title=”Источники”]

  • https://www.hostinger.ru/rukovodstva/komanda-cat-v-linux/
  • https://lumpics.ru/linux-cat-command-examples/
  • https://www.vseprolinux.ru/komanda-cat
  • https://ITProffi.ru/komanda-cat-v-linux/
  • https://host-consult.ru/primeryi-ispolzovaniya-cat-v-linux/
  • https://andreyex.ru/operacionnaya-sistema-linux/komanda-cat-v-linux-osnovnye-i-rasshirennye-primery/
[/spoiler]

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here