Команда «cat» в Linux является утилитой командной строки для просмотра и объединения содержимого файлов. Её название происходит от слов «concatenate» (соединять).
Упрощает работу с текстовыми файлами и позволяет просматривать их содержимое в терминале без необходимости использования графического интерфейса. Также используется для передачи данных по потоку ввода/вывода.
Конкатенация — это операция объединения двух строк или последовательностей символов. В программировании и информатике термин «конкатенация» используется для обозначения процесса склеивания двух строк или последовательностей символов в одну. Например, конкатенация строк «abc» и «def» даст строку «abcdef».
- Синтаксис команды
- Отображение содержимого файла
- Просмотр нескольких файлов
- Настройка форматирования вывода с помощью команды cat
- Удаление повторяющихся пустых строк. Опция -s
- Отображение номеров строк
- Как создать файл командой cat
- Перенаправление стандартного вывода
- Добавление нескольких строк с помощью heredoc
- Заключение
Синтаксис команды
1 | cat [ОПЦИИ]... [ФАЙЛ]... |
- ОПЦИИ: Эти могут быть различными флагами и аргументами, которые определяют поведение команды. Например,
-n
для нумерации строк,-E
для отображения символа доллара в конце каждой строки и так далее. - ФАЙЛ: Это список файлов, содержимое которых требуется вывести. Если не указан ни один файл (
cat
без аргументов), команда считывает стандартный ввод.
Рассмотрим подробнее опции команды cat:
- -A, —show-all: Эта опция эквивалентна
-vET
. Она позволяет отобразить все управляющие символы, такие как конец строки (^M) и символ табуляции (^I), а также символ конца файла ($). - -b, —number-nonblank: позволяет пронумеровать только непустые строки вывода, и переопределяет любое указание
-n
. - -e: Эквивалентно
-vE
. Отображает символы конца строк в виде$
. - -E, —show-ends: Позволяет отображать символ конца строки в виде
$
в каждой строке. - -n, —number: Нумерует все строки вывода.
- -s, —squeeze-blank: Подавляет повторяющиеся пустые строки в выводе.
- -t: Эквивалентно
-vT
. Отображает символы табуляции в виде^I
. - -T, —show-tabs: Показывает символы табуляции в виде
^I
. - -v, —show-nonprinting: Позволяет отображать непечатаемые символы в тексте с использованием обозначений
^
иM-
, за исключением символов конца строки (LFD
) и табуляции (TAB
). - —help: Отображает справочную информацию по команде и завершает выполнение.
- —version: Выводит информацию о версии программы и завершает выполнение.
Для вывода подробной справки используйте команду man cat
.
Отображение содержимого файла
Мы познакомились с синтаксисом и опциями программы, теперь, давайте рассмотрим примеры использования. Отображение содержимого файла — это одна из ключевых операций, которая позволяет просматривать содержимое текстовых файлов непосредственно в терминале. Команда cat считывает указанный файл и выводит его содержимое на стандартный вывод.
Например, давайте откроем файл file.txt. Команда:
1 | $ cat file.txt |
Содержимое файла file.txt было выведено в стандартный вывод терминала.
Просмотр нескольких файлов
Это особенно полезно, когда необходимо собрать данные из нескольких файлов в одном потоке для анализа или просмотра.
Например, команда:
1 | cat file1.txt file2.txt file3.txt |
выведет содержимое всех трёх файлов один за другим без промежуточных разделителей. Это удобно при работе с большими текстовыми данными или при сравнении информации между файлами. Используя cat
, можно легко объединить логи, текстовые записи или даже скрипты в один результат.
Настройка форматирования вывода с помощью команды cat
Команда cat
позволяет не только просматривать содержимое файлов, но и настраивать вывод для удобства чтения. Например, для отображения символа $
в конце каждой строки с помощью опции -E
, что позволяет визуально отделить строки и лучше понимать структуру текста.
Для изменения пробелов между абзацами и отображения символов табуляции можно использовать опцию -T
, что сделает табуляции видимыми, заменяя их на последовательность символов. Эти опции помогают лучше ориентироваться в содержимом файлов, особенно при работе с форматированием текста.
Пример использования команды с опцией -E
:
1 | cat -E file.txt |
Эта команда выведет содержимое файла file.txt
, добавляя символ $
в конце каждой строки. Например, если файл содержит следующие строки:
1 2 | Привет, Мир! |
То после выполнения команды вы увидите:
1 2 | Привет,$ Мир!$ |
Удаление повторяющихся пустых строк. Опция -s
Команда cat с опцией -s используется для удаления повторяющихся пустых строк в выводе. Опция -s (от англ. «squeeze») сжимает несколько последовательных пустых строк в одну. Это полезно для улучшения читаемости вывода, особенно когда в файле есть много лишних пробелов между абзацами или секциями.
Предположим, у нас есть файл с названием «file.txt» с содержимым:
1 2 3 4 5 6 7 8 | Это первая строка. Это вторая строка. Это третья строка. |
Если мы используем обычную команду cat без опций:
1 | cat file.txt |
Вывод будет точно соответствовать содержимому файла, сохраняя все пустые строки.
Теперь, если мы применим опцию -s
. Вывод будет выглядеть так:
Как видите, лишние пустые строки были удалены и осталась только одна. Эта опция особенно полезна при работе с файлами, которые могут содержать избыточные пустые строки, например:
- Логи с большими промежутками между записями
- Исходный код с чрезмерным вертикальным пространством
- Текстовые файлы, отформатированные с излишними разрывами строк
Вывод получается более чистым и удобным для чтения, не изменяя при этом само содержимое файла.
Отображение номеров строк
Команда cat позволяет отображать номера строк в файле с помощью опции -n
. При использовании опции -n, нумеруются все строки файла, включая пустые. Номера строк добавляются в начало каждой строки, отделяясь от содержимого табуляцией.
Предположим, у нас есть файл «file.txt» со следующим содержимым:
1 2 3 4 | Первая строка Вторая строка Четвертая строка |
Если мы выполнить команду:
1 | cat -n file.txt |
Результат будет выглядеть так:
1 2 3 4 | 1 Первая строка 2 Вторая строка 3 4 Четвертая строка |
Дополнительно.
Опция-b
: Нумерует только непустые строки.
Например:
1 | cat -b file.txt |
Выведет такой список:
1 2 3 4 | 1 Первая строка 2 Вторая строка 3 Четвертая строка |
Как создать файл командой cat
Команда cat позволяет создавать новые файлы и добавлять в них содержимое. Чтобы создать файл используйте синтаксис:
1 | cat > имя_файла |
Для примера создадим новый файл «hello.txt». Для этого указываем команду:
1 | cat > hello.txt |
После выполнения этой команды, терминал будет ожидать ввода.
Можно ввести текст, который хотим поместить в файл. Когда закончите, нажмите сочетание клавиш «Ctrl+D» для сохранения и выхода. Используйте команду ls, чтобы посмотреть содержимое папки.
Если после нажатия «Ctrl+D» вы не вернулись в командную строку то нажмите сначала клавишу «Enter» и затем сочетание «Ctrl+D».
Перенаправление стандартного вывода
Команда cat позволяет перенаправить стандартный вывод в другие файлы с помощью символов перенаправления >
и >>
.
Перенаправление с заменой содержимого (>):
1 | cat faile1.txt > faile2.txt |
Эта команда перенаправит содержимое faile1.txt в faile2.txt, заменив все существующее содержимое faile2.txt.
Перенаправление с добавлением (>>):
1 | cat faile1.txt >> faile2.txt |
Эта команда добавит содержимое faile1.txt в конец faile2.txt, сохранив существующее содержимое. Использование cat с >> позволяет легко добавлять произвольный текст в существующие файлы без необходимости открывать их в текстовом редакторе.
Объединение нескольких файлов:
1 | cat faile1.txt faile2.txt > объединенный.txt |
Эта команда объединит содержимое «faile1.txt» и «faile2.txt» в новый файл «объединенный.txt».
Будьте осторожны при использовании
>
, чтобы случайно не перезаписать важные файлы!
Добавление нескольких строк с помощью heredoc
Heredoc (сокращение от «here document») — это способ передать многострочный текст в командной строке или скриптах в Linux. Он используется для ввода текста в команды без необходимости использования отдельных файлов.
Использование heredoc для добавления информации в файл предоставляет несколько преимуществ по сравнению с обычным перенаправлением с помощью >>
.
- Во-первых, heredoc позволяет вводить многострочный текст без необходимости повторять оператор перенаправления для каждой строки, что делает код более читаемым и структурированным.
- Во-вторых, в heredoc можно использовать интерполяцию переменных и команд, что позволяет динамически добавлять информацию.
Кроме того, при использовании heredoc не нужно экранировать специальные символы, что упрощает ввод текста. Эти особенности делают heredoc удобным инструментом для работы с большими объемами текста и конфигурационными данными в скриптах.
Для примера добавим три строки в файл «file.txt».
1 2 3 4 5 | cat << EOF >> file.txt Это первая строка. Это вторая строка. Это третья строка. EOF |
Посмотрим файл и убедимся, что существующая информация из файла не была удалена и новая добавлена.
1 | cat file.txt |
EOF — это сокращение от «End Of File» (конец файла). В контексте Heredoc, это метка, которая обозначает конец вводимого многострочного текста. Программа будет считывать строки до тех пор, пока не встретит метку EOF (или любую другую выбранную метку). Эта метка служит сигналом для завершения ввода данных в командной строке или скрипте.
Посмотрим еще один пример с добавлением информации имени пользователя и текущей даты.
1 2 3 4 | cat << EOF >> file.txt Текущая дата: $(date) Пользователь: $USER EOF |
Как видим информация передается с помощью переменных. Смотрим результат.
Заключение
Команда cat
— это один из самых удобных и универсальных инструментов в Linux для работы с текстовыми файлами. Несмотря на простоту, она обладает мощным функционалом, который активно используется системными администраторами и опытными пользователями. При грамотном использовании в связке с другими командами и перенаправлением, позволяет эффективно управлять текстовыми файлами и автоматизировать обработку, что значительно упрощает выполнение рутинных задач в системе.