Cat bash: Команда cat Linux | Losst
Команда cat Linux | Losst
Команда cat — это одна из самых часто используемых команд Linux. Она часто применяется опытными пользователями во время работы с терминалом. С помощью этой команды можно очень просто посмотреть содержимое небольшого файла, склеить несколько файлов и многое другое.
Несмотря на то что утилита очень проста и решает только одну задачу в лучшем стиле Unix, она будет очень полезной. А знать о ее дополнительных возможностях вам точно не помешает. В этой статье будет рассмотрена команда cat linux, ее синтаксис, опции и возможности.
Содержание статьи:
Команда cat
Название команды — это сокращения от слова catenate. По сути, задача команды cat очень проста — она читает данные из файла или стандартного ввода и выводит их на экран. Это все, чем занимается утилита. Но с помощью ее опций и операторов перенаправления вывода можно сделать очень многое. Сначала рассмотрим синтаксис утилиты:
$ cat опции файл1 файл2 …
Вы можете передать утилите несколько файлов и тогда их содержимое будет выведено поочередно, без разделителей. Опции позволяют очень сильно видоизменить вывод и сделать именно то, что вам нужно. Рассмотрим основные опции:
- -b — нумеровать только непустые строки;
- -E — показывать символ $ в конце каждой строки;
- -n — нумеровать все строки;
- -s — удалять пустые повторяющиеся строки;
- -T — отображать табуляции в виде ^I;
- -h — отобразить справку;
- -v — версия утилиты.
Это было все описание linux cat, которое вам следует знать, далее рассмотрим примеры cat linux.
Использование cat в Linux
Самое простое и очевидное действие, где используется команда cat linux — это просмотр содержимого файла, например:
cat file
Команда просто выведет все, что есть в файле. Чтобы вывести несколько файлов достаточно просто передать их в параметрах:
cat file file1
Как вы знаете, в большинстве команд Linux стандартный поток ввода можно обозначить с помощью символа «-«. Поэтому мы можем комбинировать вывод текста из файла, а также стандартного ввода:
cat file - file1
Теперь перейдем к примерам с использованием ранее рассмотренных опций, чтобы нумеровать только непустые строки используйте:
cat -b file
Также вы можете нумеровать все строки в файле:
cat -n file
Опция -s позволяет удалить повторяющиеся пустые строки:
cat -s file
А с помощью -E можно сообщить утилите, что нужно отображать символ $ в конце каждой строки:
cat -E file
Если вы не передадите никакого файла в параметрах утилите, то она будет пытаться читать данные из стандартного ввода:
cat
Для завершения записи нажмите Ctrl+D. Таким образом можно получить очень примитивный текстовый редактор — прочитаем ввод и перенаправим его вместо вывода на экран в файл:
cat > file2
$ cat file2
Возможность объединения нескольких файлов не была бы настолько полезна, если бы нельзя было записать все в один:
cat file1 file2 > file3
$ cat file3
Вот, собственно, и все возможности команды cat, которые могут быть полезны для вас.
Выводы
В этой статье мы рассмотрели что представляет из себя команда cat linux и как ею пользоваться. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Команда cat в Linux — ИТ Проффи
cat — одна из наиболее часто используемых команд в Linux. Она считывает данные из файлов и выводит их содержимое. Это самый простой способ отображения содержимого файла в командной строке.
Синтаксис
cat [ОПЦИИ]... [ФАЙЛ]...
Ее можно использовать для отображения текстовых файлов, копирования текстовых файлов в новый документ, присоединения содержимого текстового файла в конце другого текстового файла для их объединения.
Отображение текстовых файлов
Простейший способ использования cat - задать команде имя файла. Содержимое текстового файла будет выведено на экран. Например, следующая команда прочитает содержимое файла mytext.txt и выведет его в стандартный поток вывода (экран вашего терминала):cat mytext.txt
Если файл слишком длинный, он пролистается, и вы увидите только последний экран. При необходимости просмотреть документ постранично или прокручивать его вперёд и назад можно воспользоваться такими средствами просмотра как pg, more или less.
Когда указано несколько файлов, cat будет выводить их последовательно, объединяя содержимое в потоке стандартного вывода. Поэтому следующая команда выведет содержимое двух текстовых файлов, как если бы они были одним:
cat mytext.txt mytext2.txt
Копирование текстового файла
Обычно копирование осуществляется командой 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. При отсутствии файла он будет создан, при наличии — перезаписан.
Присоединение содержимого текстового файла в конец другого текстового файла
Вместо перезаписи файла можно присоединить текст файла-источника к другому файлу при помощи оператора перенаправления «>>».
Например, команда:
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
На выходе получим следующий текст:
Мой список покупок
яблоки
апельсины
масло
хлеб
Опции
Данные опции доступны для GNU cat, стандартной для большинства дистрибутивов Linux. Для уточнения опций, доступных конкретно в вашей системе, обратитесь к руководству.
-n, —number — выводить номер каждой строки результата.
-b, —number-nonblank — выводить номер каждой строки результата, кроме пустых. Эта опция отменяет -n.
-E, —show-ends — отображать «$» в конце каждой строки.
-s, —squeeze-blank — исключать из вывода повторяющиеся пустые строки.
-T, —show-tabs — показывать символы табуляции как ^I.
-v, —show-nonprinting — показывать непечатаемые символы, кроме табуляции и конца строки.
-t — показывать непечатаемые символы, кроме конца строки.
-e — показывать непечатаемые символы, кроме табуляции.
-A, —show-all — показывать все непечатаемые символы.
—help — вывести справку и выйти.
—version — вывести информацию о версии и выйти.
Заключение
cat — простой, но очень полезный инструмент для работы с данными в текстовых файлах, системных логах, файлах конфигурации и любыми другими читаемыми для человека данными.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Команда Cat в Linux. Основные и расширенные примеры
Продолжая экскурсию по командам в Linux, рассмотрим сегодня команду cat
.
Название cat
расшифровывается как catenate
, основная задача этой команды является объединение нескольких входных файлов путем последовательной отправки их содержимого на стандартный вывод:
# Давайте сначала получим некоторые примеры файлов данных:
curl -so - dict://dict.org/'d:andreyex:gcide' | unexpand -a -t 3 |
sed -Ee '/^151/,/^[.]/!d;/^[.0-9]/s/.*//' > andreyex.txt
curl -so - dict://dict.org/'d:ubuntu:gcide' | unexpand -a -t 3 |
sed -Ee '/^151/,/^[.]/!d;/^[.0-9]/s/.*//' > ubuntu.txt
# Объединение файлов
cat andreyex.txt ubuntu.txt
Если вы хотите сохранить результат этой конкатенации в файле, вам необходимо использовать перенаправление оболочки:
cat andreyex.txt ubuntu.txt > result.txt
cat result.txt
Даже если основной целью проекта является объединение файлов, утилита cat
также часто используется только с одним аргументом для отображения содержимого этого файла на экране, точно так же, как мы это сделали в последней строке примера выше.
A. Использование команды cat со стандартным входом
При использовании без каких-либо аргументов команда cat
будет считывать данные со своего стандартного ввода и записывать их на свой стандартный вывод, что в основном бесполезно … если вы не используете какой-либо параметр для преобразования данных. Мы поговорим о нескольких интересных вариантах позже.
В дополнение к пути к файлам, команда cat
также понимает -
специальное имя файла как псевдоним для стандартного ввода. Таким образом, вы можете вставить данные, считанные со стандартного ввода между файлами, указанными в командной строке:
# Вставить разделитель между двумя соединенными файлами
echo '----' | cat ubuntu.txt - andreyex.txt
B. Использование команды cat с двоичными файлами
1. Объединение разделенных файлов
Команда cat
не делает никаких предположений о содержимом файла, поэтому она будет работать с двоичными данными. Что-то, что может быть полезно, для объединения файлов разбитых с помощью команд split
или csplit
. Или присоединить к частичным загрузкам, как мы это сейчас сделаем:
#
# Изображение AndreyEx (CC-SA 3.0)
# Оптимизировать использование полосы пропускания, разбив загрузку на две части
# (в нашей системе мы наблюдаем 10%-ный прирост по сравнению с "полной" загрузкой)
curl -s -r 0-50000 \
https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Felis_catus-cat_on_snow.jpg/1024px-Felis_catus-cat_on_snow.jpg \
-o first-half &
curl -s -r 50001- \
https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Felis_catus-cat_on_snow.jpg/1024px-Felis_catus-cat_on_snow.jpg \
-o second-half &
wait
У нас теперь две половины изображения. Вы можете открыть первую половину и увидеть, что она «сломана» с помощью ImageMagick, display
, gimp
, или любого другого программного обеспечения, способного читать файлы изображений:
display first-half
# -или-
gimp first-half
# -или-
firefox first-half
Если вы изучите команду curl, которую мы использовали, вы увидите, что две части прекрасно дополняют друг друга. Первая половина – от 0 байт до 50000, а вторая половина – от 50001 байта до конца файла. Между ними не должно быть недостающих данных. Поэтому нам нужно только связать две части вместе (в правильном порядке), чтобы вернуть полный файл:
cat first-half second-half > image.jpg
display image.jpg
2. Работа с потоковыми форматами файлов
Вы можете не только использовать команду cat
для «воссоединения» двоичных файлов, которые были разделены на несколько частей, в некоторых случаях вы также можете создавать новые файлы таким образом. Это особенно хорошо работает с «без заголовка» или «потоковыми» файловыми форматами, такими как видеофайлы (файлы .TS
) транспортного потока MPEG :
# Давайте сделаем еще видео файл с нашего изображения
ffmpeg -y -loop 1 -i cat.jpg -t 3 \
-c:v libx264 -vf scale=w=800:h=-1 \
still.ts
# Давайте сделаем fade-in из того же изображения
ffmpeg -y -loop 1 -i cat.jpg -t 3 \
-c:v libx264 -vf scale=w=800:h=-1,fade=in:0:75 \
fadein.ts
# Давайте сделаем затухание из того же изображения
ffmpeg -y -loop 1 -i cat.jpg -t 3 \
-c:v libx264 -vf scale=w=800:h=-1,fade=out:0:75 \
fadeout.ts
Теперь мы можем комбинировать все эти видеопотоки с потоком данных с помощью команды cat
, получив в выходном файле абсолютно корректный TS-файл:
cat fadein.ts still.ts fadeout.ts > video.ts
mplayer video.ts
Благодаря формату файла TS вы можете объединить эти файлы в том порядке, который вы хотите, и вы даже можете использовать один и тот же файл несколько раз в списке аргументов для создания циклов или повторения в выходном видео. Очевидно, это было бы забавно, если бы мы использовали анимированные изображения, но сможете ли вы сделать это самостоятельно: многие устройства потребительского класса записывают файлы TS, а если нет, вы все равно можете использовать ffmpeg
для конвертирования практически любого видеофайла в файл транспортного потока. Не стесняйтесь делиться своими творениями, используя раздел комментариев!
3. Взлом cpio-архивов
В качестве последнего примера давайте посмотрим, как мы можем использовать команду cat
для объединения нескольких архивов cpio
. Но на этот раз это будет не так просто, поскольку для этого потребуется немного знаний о формате архивного файла cpio
.
В архиве cpio
хранятся метаданные и содержимое файла последовательно, что делает его подходящим для конкатенации файла с помощью утилиты cat
. К сожалению, в архиве cpio
также есть контейнер, используемый для обозначения конца архива:
# Создать два подлинных CPIO` bin ' архива:
$ find ubuntu.txt andreyex.txt | cpio -o > part1.cpio
2 blocks
$ echo cat.jpg | cpio -o > part2.cpio
238 blocks
$ hexdump -C part1.cpio | tail -7
000002d0 2e 0d 0a 09 09 20 20 5b 57 6f 72 64 4e 65 74 20 |..... [WordNet |
000002e0 31 2e 35 5d 0d 0a 0a 00 c7 71 00 00 00 00 00 00 |1.5].....q......|
000002f0 00 00 00 00 01 00 00 00 00 00 00 00 0b 00 00 00 |................|
00000300 00 00 54 52 41 49 4c 45 52 21 21 21 00 00 00 00 |..TRAILER!!!....|
00000310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000400
$ hexdump -C part2.cpio | tail -7
0001da40 46 96 ab f8 ad 11 23 90 32 79 ac 1f 8f ff d9 00 |F.....#.2y......|
0001da50 c7 71 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |.q..............|
0001da60 00 00 00 00 0b 00 00 00 00 00 54 52 41 49 4c 45 |..........TRAILE|
0001da70 52 21 21 21 00 00 00 00 00 00 00 00 00 00 00 00 |R!!!............|
0001da80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
0001dc00
Хорошо является то, что двоичный архив cpio, этот контейнер с фиксированной длиной 280 байтов. Итак, используя стандартную команду head, у нас есть простой способ ее удалить:
# Каждый архив заканчивается 280-байтовым контейнером.
# Для catenate оба архива, просто убрать контейнер
# в конце первой части:
$ head -c-280 part1.cpio | cat - part2.cpio > cat.cpio
$ cpio -it < cat.cpio
ubuntu.txt
andreyex.txt
cat.jpg
239 blocks
C. Основные параметры команды 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$
$
Бонус: бесполезное использование команды cat в Linux
Никакая статья о команде cat
не была бы полной без упоминания об использовании анти-шаблона «Бесполезное использование cat».
Это происходит, когда вы используете cat
, для единственной цели отправки содержимого файла на стандартный ввод другой команды. Это использование команды cat
называется «бесполезным», поскольку простой параметр перенаправления или имени файла выполнил бы эту работу и сделал бы это лучше. Но пример стоит тысячи слов:
$ curl -so - dict://dict.org/'d:uuoc:jargon' | sed -Ee '/^151/,/^[.]/!d;/^[.0-9]/s/.*//' > uuoc.txt
$ cat uuoc.txt | less
UUOC
[from the comp.unix.shell group on Usenet] Stands for Useless Use of {cat};
the reference is to the Unix command cat(1), not the feline animal. As
received wisdom on comp.unix.shell observes, ?The purpose of cat is to
concatenate (or ?catenate?) files. If it's only one file, concatenating it
with nothing at all is a waste of time, and costs you a process.?
Nevertheless one sees people doing
cat file | some_command and its args ...
instead of the equivalent and cheaper
<file some_command and its args ...
or (equivalently and more classically)
some_command and its args ... <file
[...]
В приведенном выше примере мы использовали контейнер для отображения содержимого файла uuoc.txt
с помощью команды less:
cat uuoc.txt | less
Таким образом, единственной целью команды cat
было подавать стандартный ввод команды less
с содержимым файла uuoc.txt
. Мы бы получили такое же поведение, используя перенаправление оболочки:
less < uuoc.txt
Собственно, команда,less
, как и многие команды, также принимает имя файла в качестве аргумента. Поэтому мы могли просто написать это вместо этого:
less uuoc.txt
Как вы можете видеть, здесь нет необходимости в применении команды cat
. Мы упоминаем анти-шаблон «Бесполезное использование cat», потому, что, если вы публично используете ее на форуме или в другом месте, несомненно, кто-то укажет на это с аргументом, который вы создадите «лишний процесс для ничего».
Должны признаться, что долгое время мы были довольно пренебрежительным с такими комментариями. В конце концов, на нашем современном оборудовании добавление одного дополнительного процесса для однократной операции не может вызвать слишком много накладных расходов.
Но при написании этой статьи мы сделали быстрый эксперимент, сравнивая время, требуемое с UUOC и без него тестовым скриптом awk
для обработки 500 МБ данных, поступающих с медленного носителя.
К нашему удивлению, разница была далека от незначительной.
Однако причина заключается не в создании дополнительного процесса. Но из-за дополнительного чтения/записи и переключения контекста UUOC берет на себя (как вы можете вывести его из времени, потраченного на выполнение системного кода). Поэтому, действительно, когда вы работаете с большими наборами данных, дополнительная команда cat
имеет невыгодную стоимость. Что касается нас, мы постараемся быть более бдительными с этим сейчас! А вы? Если у вас есть примеры бесполезного использования Cat, не стесняйтесь делиться ими с нами!
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Примеры команды cat в Linux. Что делает команда cat в Linux?
Прежде чем мы начнём углубляться в тему статьи, мы должны войти в VPS через SSH и быстро проверить основной синтаксис. Команда принимает имя файла в качестве аргумента вместе с опциями, уточняющими отдельные операции.
Чтобы найти все доступные опции, просто введите cat –help в терминале.
Подготовительные действия
Сначала хотелось бы уделить время предварительным действиям, поскольку не все юзеры знакомы с принципом работы консоли. Дело в том, что при открытии файла требуется либо указывать точный путь к нему, либо производить запуск команды, находясь непосредственно в самой директории через «Терминал». Поэтому мы советуем для начала просмотреть такое руководство:
- Запустите файловый менеджер и перейдите в ту папку, где хранятся необходимые файлы.
- Нажмите на одном из них правой кнопкой мыши и выберите пункт «Свойства».
- Во вкладке «Основные» ознакомьтесь с информацией по поводу родительской папки. Запомните этот путь, ведь он пригодится далее.
- Запустите «Терминал» через меню или комбинацию клавиш Ctrl + Alt + T.
- Пропишите команду cd /home/user/folder, где user — имя пользователя, а folder — папка, где хранятся объекты. За перемещение по пути отвечает стандартная команда cd.
Таким методом осуществляется переход к определенной директории через стандартную консоль. Дальнейшие действия также будут производиться через эту папку.
Просмотр содержимого
Одна из основных функций упомянутой команды — просмотр содержимого различных файлов. Вся информация отображается отдельными строками в «Терминале», а применение cat выглядит так:
- В консоли введите cat testfile, где testfile — имя необходимого файла, а затем нажмите на клавишу Enter.
- Ознакомьтесь с содержимым объекта.
- Вы можете открыть сразу несколько файлов, для этого потребуется указать все их названия, например, cat testfile testfile1.
- Строки будут совмещены и отобразятся одним целым.
Вот так работает cat без применения доступных аргументов. Если же вы просто пропишите в «Терминале»cat, то получите некое подобие консольного блокнота с возможностью записывать нужное количество строк и сохранять их нажатием на Ctrl + D.
Нумерация строк
Сейчас давайте затронем рассматриваемую команду с применением различных аргументов. Начать следует с нумерации строк, а за это отвечает -b.
- В консоли напишите cat -b testfile, где testfile — название нужного объекта.
- Как видите, были пронумерованы все присутствующие не пустые строки.
- Вы можете использовать этот аргумент с выводом нескольких файлов, как это было показано выше. В таком случае нумерация будет продолжаться.
- Если есть желание пронумеровать все строки, включая пустые, придется задействовать аргумент -n, и тогда команда приобретает вид: cat -n testfile.
Удаление повторяющихся пустых строк
Случается так, что в одном документе присутствует множество пустых строк, возникших каким-либо образом. Вручную удалять их через редактор не всегда удобно, поэтому здесь тоже можно обратиться к команде cat, применив аргумент -s. Тогда строка приобретает вид cat -s testfile (доступно перечисление нескольких файлов).
Добавление знака $
В операционной системе Linux знак доллара в конце строчки, означает что команда будет выполнена без root прав. Бывает, что нужно добавить символ «$» в конец всех строк документа, для этого нам поможет опция -e.
cat -e script
Небольшой вывод
В итоге можно сказать, что популярная утилита имеет три основных функции:
- выводит на экран текст;
- перенаправляет стандартный вывод;
- добавляет символа $.
Отображение текстовых файлов
Простейший способ использования 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]
Примеры команды cat в Linux
В операционных системах Linux присутствует множество встроенных утилит, взаимодействие с которыми осуществляется путем ввода соответствующих команд в «Терминале» с различными аргументами. Благодаря этому пользователь может всячески управлять самой ОС, различными параметрами и имеющимися файлами. Одной из популярных команд является cat, и служит она для работы с содержимым файлов разных форматов. Далее мы бы хотели показать несколько примеров использования этой команды с использованием простых текстовых документов.
Применяем команду cat в Linux
Рассматриваемая сегодня команда доступна для всех дистрибутивов, основанных на ядре Линукс, и везде выглядит одинаковым образом. Из-за этого используемая сборка не имеет никакого значения. Сегодняшние примеры будут осуществляться на компьютере под управлением Ubuntu 18.04, а вам останется только ознакомиться с аргументами и принципом их действий.
Подготовительные действия
Сначала хотелось бы уделить время предварительным действиям, поскольку не все юзеры знакомы с принципом работы консоли. Дело в том, что при открытии файла требуется либо указывать точный путь к нему, либо производить запуск команды, находясь непосредственно в самой директории через «Терминал». Поэтому мы советуем для начала просмотреть такое руководство:
- Запустите файловый менеджер и перейдите в ту папку, где хранятся необходимые файлы.
- Нажмите на одном из них правой кнопкой мыши и выберите пункт «Свойства».
- Во вкладке «Основные» ознакомьтесь с информацией по поводу родительской папки. Запомните этот путь, ведь он пригодится далее.
- Запустите «Терминал» через меню или комбинацию клавиш Ctrl + Alt + T.
- Пропишите команду
cd /home/user/folder
, где user — имя пользователя, а folder — папка, где хранятся объекты. За перемещение по пути отвечает стандартная командаcd
.
Таким методом осуществляется переход к определенной директории через стандартную консоль. Дальнейшие действия также будут производиться через эту папку.
Просмотр содержимого
Одна из основных функций упомянутой команды — просмотр содержимого различных файлов. Вся информация отображается отдельными строками в «Терминале», а применение cat выглядит так:
- В консоли введите
cat testfile
, где testfile — имя необходимого файла, а затем нажмите на клавишу Enter. - Ознакомьтесь с содержимым объекта.
- Вы можете открыть сразу несколько файлов, для этого потребуется указать все их названия, например,
cat testfile testfile1
. - Строки будут совмещены и отобразятся одним целым.
Вот так работает cat без применения доступных аргументов. Если же вы просто пропишите в «Терминале» cat
, то получите некое подобие консольного блокнота с возможностью записывать нужное количество строк и сохранять их нажатием на Ctrl + D.
Нумерация строк
Сейчас давайте затронем рассматриваемую команду с применением различных аргументов. Начать следует с нумерации строк, а за это отвечает -b
.
- В консоли напишите
cat -b testfile
, где testfile — название нужного объекта. - Как видите, были пронумерованы все присутствующие не пустые строки.
- Вы можете использовать этот аргумент с выводом нескольких файлов, как это было показано выше. В таком случае нумерация будет продолжаться.
- Если есть желание пронумеровать все строки, включая пустые, придется задействовать аргумент
-n
, и тогда команда приобретает вид:cat -n testfile
.
Удаление повторяющихся пустых строк
Случается так, что в одном документе присутствует множество пустых строк, возникших каким-либо образом. Вручную удалять их через редактор не всегда удобно, поэтому здесь тоже можно обратиться к команде cat, применив аргумент -s
. Тогда строка приобретает вид cat -s testfile
(доступно перечисление нескольких файлов).
Добавление знака $
Знак $ в командной строке операционных систем Linux означает, что введенная далее команда будет выполнена от имени обычного пользователя, без предоставления рут-прав. Иногда бывает необходимо добавить такой знак в конец всех строк файла, и для этого следует применить аргумент -E
. В итоге получается cat -E testfile
(буква E должна быть обязательно прописана в верхнем регистре).
Объединение нескольких файлов в один новый
Cat позволяет достаточно быстро и легко объединить несколько объектов в один новый, который будет сохранен в той же папке, откуда и осуществляются все действия. Вам достаточно выполнить следующее:
- В консоли напишите
cat testfile testfile1 > testfile2
(Количество названий перед > может быть неограниченным). После ввода нажмите на Enter. - Откройте директорию через файловый менеджер и запустите новый файл.
- Видно, что в нем присутствуют все строки из всех указанных документов.
Намного реже используется еще несколько аргументов, но их обязательно следует упомянуть:
-v
— покажет версию рассматриваемой утилиты;-h
— отобразит справку с основной информацией;-T
— добавит отображение для табуляции в виде символов ^I.
Вы были ознакомлены с процедурой редактирования документов, которая может пригодиться для объединения обычного текста или конфигурационных файлов. Однако если вы заинтересованы в создании новых объектов, советуем обратиться к другой нашей статье по следующей ссылке.
Подробнее: Создаем и удаляем файлы в Linux
Кроме всего, в операционных системах на Линукс существует еще большое количество популярных и часто использующихся команд, узнайте о них подробнее в отдельном материале далее.
Читайте также: Часто используемые команды в «Терминале» Linux
Теперь вы знаете о стандартной команде cat все, что может пригодиться при работе в «Терминале». Во взаимодействии с ней нет ничего сложного, главное — придерживаться синтаксиса и регистров атрибутов.
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ
Команда cat — синтаксис аргументы и пример создания файла
Команда cat — одна из популярных утилит операционной системы Линукс. ЕЕ часто используют опытные пользователи из командной строки. Ведь самый мощный инструмент ОС Linux — терминал. Из него можно выполнить большинство задач. Такие как:
- создание, удаление файлов;
- сменить пароль пользователя;
- запретить доступ к интернету;
- запретить доступ к каталогу;
- установить и удалить программу;
- перезагрузить компьютер;
- настройка файрвола iptables;
- проброс портов;
- установить графическую оболочку;
- права доступа;
- и многое другое.
Название cat происходит от слова «catenate». Позволяет вывести на экран содержимое в качестве аргумента файла. Например, необходимо посмотреть содержимое test.
Описание
Рассмотрим синтаксис.
cat аргументы файл1 файл2
Посмотрим, что говорит справка. Выполним cat —help.
Справка —help
Основные параметры утилиты:
- -A. Показывает в конце строки $.
- -b. Утилита нумерует строки начиная с 1. При этом пустые, не нумеруется.
- -e. В конце строки показывает $.
- -n. Нумерует все строки, включая пустые.
- -s. Не показывает повторные пустые строки.
- -T. Показывать табуляцию.
Примеры
Рассмотрим простой пример. Нужно узнать имя компьютера. Для этого, считаем файл hostname.cat /etc/hostname
Читаем имя компьютера
Как видим выше на скриншоте, команда просто прочитала текст и показала его на экране. В нашем случае имя компьютера это debian.сat -n /home/user/file
Результат выполнения с ключом -n
ВАЖНО! Опция -n нумерует все строки, в том числе пустые.
Как создать файл с помощью cat?
Часто требуется скопировать конфиг какой-нибудь программы, сделать бэкап. Без больших усилий можно это выполнить через перенаправление вывода.
Перенаправление означает, что утилита перенаправит стандартный вывод на экран в то что укажет пользователь символом >, в устройство или файл.
Считаем документ «file» и перенаправим результат вывода в «file2». В итоге у нас на экране не покажется содержимое документа, а результат запишется в новый файл «file2».
cat /home/file > /home/file2
Добавим в конец документа test содержимое test2.cat test2 >> test
Запишем содержимое двух документов в один.
<code»>cat file file2 >file3
Убираем комментарии из конфига
Работа с большими файлами, где очень много комментариев не удобно. Популярная задача в операционной системе Linux — убрать комментарии из конфига.
Обычно такую задачу решают двумя действиями:
- Делаем копию оригинального конфига, помечаем его как-нибудь «orig».
- Перенаправляем вывод используя дополнительный фильтр. Чтобы в конфиг не попали записи с комментриями #.
Примером такого конфига может быть samba, smb.conf.cp smb.conf smb.conf.orig
cat smb.conf.orig | egrep "^[^#]" > smb.conf
Добавление знака $
В операционной системе Linux знак доллара в конце строчки, означает что команда будет выполнена без root прав. Бывает, что нужно добавить символ «$» в конец всех строк документа, для этого нам поможет опция -e.cat -e script
Небольшой вывод
В итоге можно сказать, что популярная утилита имеет три основных функции:
- выводит на экран текст;
- перенаправляет стандартный вывод;
- добавляет символа $.
Как «cat
Мне нужно было написать скрипт для ввода многострочного ввода в программу (psql
).
Немного погуглив, я обнаружил, что следующий синтаксис работает:
cat << EOF | psql ---params
BEGIN;
`pg_dump ----something`
update table .... statement ...;
END;
EOF
Это правильно создает многострочную строку (от BEGIN;
до END;
включительно) и передает ее в качестве входного сигнала в psql
.
Но я понятия не имею, как/почему это работает, Может кто-нибудь объяснить?
Я имею в виду в основном cat << EOF
, я знаю, что >
выводит в файл, >>
добавляет в файл, <
считывает входные данные из файла.
Что именно делает <<
?
И есть ли для этого мужская страница?
linux
bash
scripting
heredoc
Поделиться
Источник
hasen
23 марта 2010 в 13:57
7 Ответов
437
Это называется форматом heredoc , чтобы предоставить строку в stdin. Более подробную информацию смотрите в разделе https://en.wikipedia.org/wiki/Here_document#Unix_shells .
От man bash
:
Вот Документы
Этот тип перенаправления указывает shell на чтение входных данных из
источник тока до линии
содержит только слово (без trailing
бланки) видно.Все строки, прочитанные до этого момента, затем используются в качестве
стандартный ввод для команды.Формат здесь-документы:
<<[-]word here-document delimiter
Нет расширения параметров, замены команд, арифметического расширения или
расширение имени пути выполняется на
слово. Если какие-либо символы в word являются
цитируется, то
разделитель — это результат удаления кавычек в word, а также строк
в here-документе не раскрываются.
Если слово не имеет кавычек, то все строки
здесь-документ подвергается расширению параметра, команда
подстановка и арифметика
расширение. В последнем случае,
последовательность символов\<newline>
является
игнорируется, и\
должны использоваться, чтобы процитировать персонажей\
,$
,`
, а .Если оператор перенаправления равен
<<-
, то все ведущие символы табуляции
вычеркиваются из входных линий и
строка, содержащая разделитель . Этот
позволяет здесь-документы в пределах shell скриптов должны быть отступы естественным образом.
Поделиться
kennytm
23 марта 2010 в 13:58
399
Синтаксис cat <<EOF
очень полезен при работе с многострочным текстом в Bash, например. при назначении многострочной строки переменной shell, файлу или каналу.
1. Назначение многострочной строки переменной shell
$ sql=$(cat <<EOF
SELECT foo, bar FROM db
WHERE foo='baz'
EOF
)
Переменная $sql
теперь также содержит символы новой строки. Вы можете проверить это с помощью echo -e "$sql"
.
2. Передать многострочную строку в файл в формате Bash
$ cat <<EOF > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
EOF
Файл print.sh
теперь содержит:
#!/bin/bash
echo $PWD
echo /home/user
3. Передать многострочную строку в трубу в Bash
$ cat <<EOF | grep 'b' | tee b.txt
foo
bar
baz
EOF
Файл b.txt
содержит строки bar
и baz
. Тот же вывод выводится на stdout
.
Поделиться
Vojtech Vitek
04 февраля 2014 в 10:28
197
В вашем случае «EOF» называется «Here Tag». В основном <<Here
говорит shell, что вы собираетесь ввести многострочную строку до «tag» Here
. Вы можете назвать этот тег как хотите, часто это EOF
или STOP
.
Некоторые правила здесь теги:
- Тег может быть любой строкой, прописной или строчной, хотя большинство людей используют верхний регистр по соглашению.
- Тег не будет рассматриваться как тег Here, если в этой строке есть другие слова. В этом случае он будет просто считаться частью строки. Тег должен быть сам по себе на отдельной строке, чтобы считаться тегом.
- Тег не должен иметь ни одного переднего или trailing пробелов в этой строке, чтобы считаться тегом. В противном случае он будет рассматриваться как часть строки.
образец:
$ cat >> test <<HERE
> Hello world HERE <-- Not by itself on a separate line -> not considered end of string
> This is a test
> HERE <-- Leading space, so not considered end of string
> and a new line
> HERE <-- Now we have the end of the string
Поделиться
edelans
22 августа 2014 в 08:48
59
POSIX 7
kennytm цитирует man bash
, но большинству это тоже POSIX 7: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_04 :
Операторы перенаправления » << «и» << — «позволяют перенаправлять строки, содержащиеся во входном файле shell, известном как» здесь-документ», на вход команды.
Здесь-документ должен рассматриваться как одно слово, которое начинается после следующего и продолжается до тех пор , пока не появится строка, содержащая только разделитель и А, без каких-либо символов между ними. Затем начинается следующий здесь-документ, если он есть. Этот формат выглядит следующим образом:
[n]<<word here-document delimiter
где необязательный параметр N-количество дескрипторов файлов. Если номер опущен, то здесь-документ ссылается на стандартный ввод (файловый дескриптор 0).
Если какой-либо символ в word заключен в кавычки, разделитель должен быть сформирован путем удаления кавычек в word, и строки здесь-документа не должны быть расширены. В противном случае разделителем будет само слово.
Если никакие символы в word не заключены в кавычки, то все строки здесь-документа должны быть расширены для расширения параметров, замены команд и арифметического расширения. В этом случае in the input ведет себя как внутренние двойные кавычки (см. двойные кавычки). Тем не менее, символ двойной кавычки ( ‘»‘ ) не должен рассматриваться специально в рамках данного документа, за исключением случаев, когда двойная кавычка появляется внутри документа.»$()», «`», или » ${}».
Если символ перенаправления является «<< -«, то все ведущие символы
<tab>
должны быть удалены из входных строк и строки, содержащей разделитель trailing. Если в строке указано более одного оператора «<<» или «<< -«, то документ here-document, связанный с первым оператором, должен быть представлен первым приложением и должен быть прочитан первым оператором shell.Когда here-документ считывается с устройства terminal и shell является интерактивным, он должен записать содержимое переменной PS2, обработанной так, как описано в переменных Shell, в стандартную ошибку перед чтением каждой строки ввода до тех пор, пока разделитель не будет распознан.
Образцы
Некоторые примеры еще не приведены.
Котировки предотвращают расширение параметров
Без кавычек:
a=0
cat <<EOF
$a
EOF
Выход:
0
С цитатами:
a=0
cat <<'EOF'
$a
EOF
или (уродливый, но действительный):
a=0
cat <<E"O"F
$a
EOF
Выходы:
$a
Дефис удаляет ведущие вкладки
Без дефиса:
cat <<EOF
<tab>a
EOF
где <tab>
-это литеральная вкладка, которую можно вставить с помощью Ctrl + V <tab>
Выход:
<tab>a
С дефисом:
cat <<-EOF
<tab>a
<tab>EOF
Выход:
a
Это, конечно, существует для того, чтобы вы могли отступить свой cat
, как и окружающий код, который легче читать и поддерживать. E.g.:
if true; then
cat <<-EOF
a
EOF
fi
К сожалению, это не работает для пробелов: POSIX благоприятствует tab
отступу здесь. Хлоп.
Поделиться
Ciro Santilli 新疆改造中心996ICU六四事件
09 июня 2015 в 09:41
19
Использование тройника вместо кошки
Не совсем как ответ на первоначальный вопрос, но я все равно хотел поделиться этим: мне нужно было создать конфигурационный файл в каталоге, который требовал прав root.
Следующее не работает для этого случая:
$ sudo cat <<EOF >/etc/somedir/foo.conf
# my config file
foo=bar
EOF
потому что перенаправление обрабатывается вне контекста sudo.
Я в конечном итоге использовал это вместо этого:
$ sudo tee <<EOF /etc/somedir/foo.conf >/dev/null
# my config file
foo=bar
EOF
Поделиться
Andreas Maier
13 февраля 2017 в 12:14
0
Стоит отметить,что здесь Документы работают и в циклах bash.
В этом примере показано, как получить список столбцов таблицы:
export postgres_db_name='my_db'
export table_name='my_table_name'
# start copy
while read -r c; do test -z "$c" || echo $table_name.$c , ; done < <(cat << EOF | psql -t -q -d $postgres_db_name -v table_name="${table_name:-}"
SELECT column_name
FROM information_schema.columns
WHERE 1=1
AND table_schema = 'public'
AND table_name =:'table_name' ;
EOF
)
# stop copy , now paste straight into the bash shell ...
output:
my_table_name.guid ,
my_table_name.id ,
my_table_name.level ,
my_table_name.seq ,
или даже без новой линии
while read -r c; do test -z "$c" || echo $table_name.$c , | perl -ne
's/\n//gm;print' ; done < <(cat << EOF | psql -t -q -d $postgres_db_name -v table_name="${table_name:-}"
SELECT column_name
FROM information_schema.columns
WHERE 1=1
AND table_schema = 'public'
AND table_name =:'table_name' ;
EOF
)
# output: daily_issues.guid ,daily_issues.id ,daily_issues.level ,daily_issues.seq ,daily_issues.prio ,daily_issues.weight ,daily_issues.status ,daily_issues.category ,daily_issues.name ,daily_issues.description ,daily_issues.type ,daily_issues.owner
Поделиться
Yordan Georgiev
14 августа 2018 в 15:11
0
Это не обязательно ответ на первоначальный вопрос, но обмен некоторыми результатами моего собственного тестирования. Этот:
<<test > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
test
будет создан тот же файл, что и:
cat <<test > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
test
Поэтому я не вижу смысла использовать команду cat.
Поделиться
»
06 июня 2018 в 00:15
Похожие вопросы:
sudo cat << EOF > файл не работает, sudo su работает
Я попробовал следующее в командной строке в bash: sudo cat << EOF > /etc/yum.repos.d/some-name.repo #Content #…. #… EOF Он жаловался : -bash: /etc/yum.repos.d/some-name.repo: Permission…
Как получить cat <<EOF >> файл, содержащий код?
Я хочу напечатать код в файл, используя cat <<EOF >> : cat <<EOF >> brightup.sh !/bin/bash curr=`cat /sys/class/backlight/intel_backlight/actual_brightness` if [ $curr -lt…
Почему «echo <<EOF» не работает, как ожидалось
Я пытаюсь понять функцию документа bash здесь. Ниже код работает, как ожидалось, и возвращает abc к terminal. Если я заменю программу cat на echo , я не увижу никакого вывода. Почему я не могу…
Почему бы не использовать <<EOF вместо cat <<EOF?
Мне интересно, когда использование cat << предпочтительнее, чем просто использование << . Я тестирую в ZSH shell и cat <<EOF Hello world! EOF выводит то же самое из <<EOF…
Bash < < EOF перенаправление, как это работает?
В этом вопросе и в этом вопросе используется такой синтаксис скрипта BASH: #!/bin/bash sql << EOF **some SQL commands** EOF Где EOF на самом деле может быть чем угодно. Это работает для меня,…
cat в нескольких командах ssh не работает
Это, вероятно, очень простой, но, к сожалению, я понятия не имею, как его гуглить. Почему приведенный ниже фрагмент не работает должным образом? Я имею в виду, как я могу заставить cat указать на…
Подавление сообщений об ошибках, которые могут возникнуть при использовании команды cat с EOF или EOD в сценарии bash
Моя цель-подавить все сообщения об ошибках, которые могут возникнуть при использовании cat с EOF или EOD . Когда я запускаю скрипт bash, я получаю ошибку ниже, потому что я намеренно добавил знак /…
Bash-почему $(sudo cat file)не может найти файл, который существует?
Вопрос Почему $(sudo cat) не может найти файл, который существует? Эта работа: for host in $(cat /etc/ansible/hosts | cut -d ‘ ‘ -f 1 | grep -P ‘^master-‘ | sort | uniq) do ssh ${host} /bin/bash…
Как заменить ` $ variable ‘в пределах bash cat’ < < ‘EOF’ >’?
Я пишу bash cat << ‘EOF’ > скрипт для создания files.script как показано ниже: #!/bin/bash for sitename in (site1,site2,site3) do cat << ‘EOF’ >/home/$sitename/conf…
sudo heredoc: bash: предупреждение: здесь-документ в строке 0, разделенной end-of-file (требуется `EOF…EOF’)
Моя цель-использовать sudo для записи содержимого в файл xstartup другого пользователя. Но это была моя попытка… sudo -iu user1 bash -lic ‘cat > ~/.vnc/xstartup <<\EOF … EOF’ ……
Команда кота
cat — одна из наиболее часто используемых команд в Unix-подобных операционных системах. В отношении текстовых файлов у него есть три связанных функции: их отображение, объединение их копий и создание новых.
общий синтаксис кошки
cat [параметры] [имена файлов] [-] [имена файлов]
Квадратные скобки указывают на то, что заключенные элементы не являются обязательными.
Чтение файлов
Чаще всего cat используется для чтения содержимого файлов, и cat часто является наиболее удобной программой для этой цели.Все, что необходимо, чтобы открыть текстовый файл для просмотра на мониторе, — это ввести слово cat , за которым следует пробел и имя файла, а затем нажать клавишу ENTER. Например, следующее будет отображать содержимое файла с именем file1 :
кошачий файл1
Стандартный вывод (т. Е. Назначение вывода по умолчанию) для cat, как обычно бывает для другой командной строки (т.е., полнотекстовый режим) программ, это экран монитора. Однако может перенаправить с экрана, например, в другой файл для записи в этот файл или в другую команду для использования в качестве входных данных для этой команды.
В следующем примере стандартный вывод cat перенаправляется с помощью оператора перенаправления вывода (который представлен угловой скобкой, указывающей вправо) на file2 :
кот файл1> файл2
То есть вывод cat записывается в file2, а не отображается на экране монитора.
Вместо этого стандартный вывод может быть перенаправлен с помощью канала (представленного вертикальной полосой) на фильтр (т.е. программу, которая преобразует данные каким-либо значимым образом) для дальнейшей обработки. Например, если файл слишком велик для одновременного размещения всего текста на экране монитора, как это часто бывает, текст будет прокручиваться вниз по экрану с высокой скоростью и его будет очень трудно читать. Эта проблема легко решается путем трубопровода выхода на фильтр минус , т.е.е.,
cat file1 | менее
Это позволяет пользователю перемещать содержимое файла по одному экрану за раз, нажимая клавишу пробела, и перемещаться назад, нажимая клавишу b . Пользователь может выйти из режима less, нажав кнопку q .
Стандартный ввод (т. Е. Источник входных данных по умолчанию) для cat, как это обычно бывает для других команд в Unix-подобных системах, — это клавиатура. То есть, если для его открытия не указан файл, cat будет читать все, что набирается на клавиатуре.
Ввод команды cat , за которой следует оператор перенаправления вывода и имя файла в той же строке, нажатие ENTER для перехода к следующей строке, затем ввод текста и, наконец, повторное нажатие ENTER приводит к записи текста в этот файл. Таким образом, в следующем примере текст, набранный во второй строке, будет записан в файл с именем felines :
cat> felines
Это не про кошачьих.
Программа завершается и восстанавливается обычная командная строка путем одновременного нажатия клавиш CONTROL и d .
Повторение приведенного выше примера без использования оператора перенаправления и указания файла назначения, т. Е.
кот
Это не про кошачьих.
вызывает отправку текста на стандартный вывод, т. е. повторение на экране монитора.
Конкатенация
Вторая роль cat — конкатенация (т. Е. Связывание вместе) копий содержимого файлов.(Это источник любопытного имени кошки.) Поскольку объединение происходит только с копиями, это не влияет на исходные файлы.
Например, следующая команда объединит копии содержимого трех файлов file1 , file2 и file3 :
cat файл1 файл2 файл3
Содержимое каждого файла будет отображаться на экране монитора (который, опять же, является стандартным выводом и, следовательно, местом назначения вывода при отсутствии перенаправления), начиная с новой строки и в том порядке, в котором имена файлов появляются в команда.Этот вывод можно так же легко перенаправить с помощью оператора перенаправления вывода в другой файл, например file4 , используя следующее:
кот файл1 файл2 файл3> файл4
В следующем примере вывод cat передается по конвейеру фильтру sort , чтобы расположить строки текста в алфавитном порядке после объединения и до записи в file4:
кот файл1 файл2 файл3 | сортировать> файл4
Создание файла
Третье применение cat — создание файлов.Для небольших файлов это часто проще, чем использование vi , gedit или других текстовых редакторов. Для этого нужно ввести cat , затем оператор перенаправления вывода и имя создаваемого файла, затем нажать ENTER и, наконец, одновременно нажать клавиши CONTROL и d . Например, новый файл с именем file1 можно создать, набрав
кошка> файл1
затем нажмите клавишу ENTER и, наконец, одновременно нажмите клавиши CONTROL и d .
Если файл с именем file1 уже существует, он будет перезаписан (т.е. все его содержимое будет удалено) новым пустым файлом с тем же именем. Таким образом, осторожный пользователь может вместо этого использовать оператор добавления (представленный двумя последовательными угловыми скобками, указывающими вправо), чтобы предотвратить непреднамеренное стирание. То есть,
кот >> файл1
То есть, если делается попытка создать файл с помощью cat и оператора добавления, и новый файл имеет то же имя, что и существующий файл, существующий файл фактически сохраняется, а не перезаписывается, и любой новый текст добавляется в конец существующего файла.
Текст можно ввести во время создания файла, набрав его после нажатия клавиши ENTER. Можно ввести любое количество текста, включая текст в несколько строк.
cat также можно использовать для одновременного создания нового файла и передачи в него данных из существующего файла. Это достигается путем ввода cat , имени файла, из которого будет получен вывод, оператора перенаправления вывода и имени создаваемого файла. Затем нажатие ENTER приводит к созданию и записи нового файла.Например, при вводе следующего и последующем нажатии ENTER создается новый файл с именем file2 , который содержит копию содержимого file1 :
кот файл1> файл2
Не влияет на содержимое file1. (То же самое, конечно, можно сделать так же легко, используя команду cp , которая используется для копирования файлов, то есть cp file1 file2 , но приведенный выше пример действительно иллюстрирует большую универсальность cat.)
Небольшая модификация описанной выше процедуры позволяет создать новый файл и записать в него текст как из другого файла, так и с клавиатуры. Дефис, окруженный пробелами, добавляется перед входным файлом, если введенный текст должен стоять перед текстом из входного файла, и добавляется после входного файла, если введенный текст должен идти после текста из входного файла. входной файл. Так, например, чтобы создать новый файл file6 , который состоит из текста, введенного с клавиатуры, за которым следует содержимое file5 , сначала введите следующее:
кошка - файл5> файл6
Или чтобы создать новый файл file8 , который состоит из содержимого file7 , за которым следует текст, вводимый с клавиатуры, сначала введите следующее:
кошка файл7 -> файл8
В любом случае нажмите ENTER, чтобы перейти к новой строке, и введите желаемый текст на любом количестве строк.Наконец, нажмите ENTER еще раз, а затем одновременно нажмите клавиши CONTROL и d , чтобы выполнил (т.е.запустить) команду.
Примером практического применения этого использования cat является создание шаблонов писем (или других документов), для которых только верхние части (например, даты и имена) настраиваются для каждого получателя.
Создано 15 июня 2004 г. Обновлено 10 апреля 2005 г.
Copyright © 2004 — 2005 Bellevue Linux. Все права защищены.
.
Страница «Человек-кошка» — Linux
Страница «Человек-кошка» — Linux — SS64.com
Объединение и печать (отображение) содержимого файлов.
Синтаксис cat [ Опции ] [ Файл ] ... Объедините ФАЙЛОВ (ов) или стандартный ввод со стандартным выводом. -A, --show-all эквивалентно -vET -b, --number-nonblank число непустых строк вывода -e эквивалент -vE -E, --show -nds отображать $ в конце каждой строки -n, --number нумеровать все выходные строки -s, --squeeze-blank никогда не более одной пустой строки -t эквивалент -vT -T, --show-tabs отображать символы TAB как ^ I -u (игнорируется) -v, --show-nonprinting использовать нотацию ^ и M-, кроме LFD и TAB --help отобразить эту справку и выйти --version вывести информацию о версии и выйти Если ФАЙЛ или ФАЙЛ - -, читать стандартный ввод.Если дан один ФАЙЛ , cat передаст файл без изменений в STDOUT (по умолчанию отображение).
Команду cat можно передать в grep для поиска определенных слов в файле:
cat file.txt | grep ключевое слово output.txt
Однако все современные версии grep имеют эту встроенную функцию. Выполнение одной команды / процесса более эффективно, поэтому работа с большими файлами будет заметно быстрее:
grep keyword file.txt output.txt
grep также может отображать весь файл (например, cat) с помощью ключевого слова grep «.»будет соответствовать началу каждой строки, включая пустые строки.
Когда grep используется для отображения нескольких файлов, он будет добавлять к каждой строке вывода имя файла:
$ grep. * .txt
Примеры :
Показать файл:
$ cat myfile.txt
Показать все файлы .txt:
$ cat * .txt
Объединить два файла:
$ cat File1.txt File2.txt> union.txt
Если вам нужно объединить два файла, но при этом удалить дубликаты, это можно сделать с помощью sort unique:
$ sort -u File1.txt File2.txt> unique_union.txt
Поместите содержимое файла в переменную
$ my_variable = ‘cat File3.txt’
«Быть никем, кроме себя — в мире, который делает
Лучше всего, днем и ночью, сделать тебя похожим на всех — значит бороться с
самая тяжелая битва, в которой может сражаться любой человек, и никогда не прекращать сражаться »
~ Э. Каммингс
Связанные команды linux:
cp — Скопируйте один или несколько файлов в другое место.
mv — перемещать или переименовывать файлы или каталоги.
pv — Следите за прохождением данных по конвейеру.
tac — объединить и записать файлы в обратном порядке.
hexdump — Просмотр двоичного файла
Уловки глупого кота — Майк Кирико.
Эквивалентная команда Windows: TYPE — отобразить содержимое текстового файла.
Авторские права © 1999-2020 SS64.com
Некоторые права защищены.
Можно ли использовать команду linux cat для записи текста в файл?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.
linux — Как использовать команду cat с -exec в bash?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.