6 способов использования команды cat в Linux

6 способов использования команды cat в Linux


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

1. Объединение нескольких файлов

Я начну здесь, хотя это, вероятно, не самое распространенное использование команды cat, потому что изначальная цель инструмента заключалась в объединении файлов. Это «cat» посредине слова «объединять» и дало название команде. Если вы не знакомы с этим термином, это означает «объединить вместе», так что cat в первую очередь предназначен для объединения файлов.

Предположим, у вас есть файл foo, который выглядит так:

An example file With a couple of lines      

И у вас также есть второй файл, бар, выглядящий так:

This is just another example      

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

cat foo bar      

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

Это может показаться не очень полезным, но вы, вероятно, в какой-то момент обнаружите необходимость объединять файлы. Вы можете объединять лог-файлы или комбинировать несколько глав текста в одно единое произведение. Вы также можете объединять файлы для удобства транспортировки или хранения, хотя для такой задачи команда tar обычно лучше подходит.

2. Отображение одного файла

Интересно, что произойдет, если вы передадите только один аргумент файла команде cat? К счастью, инструмент обрабатывает этот случай с разумным поведением по умолчанию, а не выдает ошибку.

cat foo     

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

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

Это использование команды cat идеально подходит, когда вы хотите быстро взглянуть на содержимое текстового файла, особенно если он довольно маленький. Но вы обнаружите, что это менее удобно для более длинных файлов или для файлов, которые вы хотите исследовать более подробно. В таких случаях такой инструмент, как more или less, будет более подходящим.

Без аргументов команда cat повторяет все, что она видит на стандартном вводе. Запуск программы как cat заставит её ждать ввода, печатать этот ввод и повторять его до тех пор, пока не получит сигнал/символ конца файла (Ctrl + D). Смотрите дальше, чтобы узнать, как это может быть действительно полезно!

3. Добавление номеров строк в файл

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

cat -n foo     

-n параметр нумерует строки вывода, начиная с 1.

Разные версии команды cat ведут себя по-разному. Версия GNU coreutils 9.4 (Ubuntu 24.04) нумерует каждую строку вывода, увеличивая номер на 1 каждый раз. Однако на macOS 26.0 команда cat нумерует каждый входной файл по отдельности, сбрасывая счетчик с каждым файлом.

Команда cat также поддерживает параметр -b, который нумерует непустые строки вывода. Это может быть полезно в некоторых случаях, но вам следует избегать этого при программировании, так как такие инструменты, как компиляторы, всегда будут указывать номера строк, включая пустые строки.

В Linux всегда найдется другой способ! Команда nl является одним из многих способов нумерования строк, но она более мощная и поддерживает больше опций. Загляните в неё, если хотите настроить отображение номеров строк или нумеровать отдельные страницы по отдельности.

4. Объединение двух файлов и сохранение их в третьем

Настоящая полезность команды cat становится ясной, когда вы сочетаем ее с мощью оболочки Linux, особенно с такими возможностями, как перенаправление и пайпинг. Например, вместо того чтобы отправлять вывод на экран для немедленного просмотра, вы можете отправить его в другое место.

Один из самых распространенных случаев заключается в том, чтобы объединить два файла и сохранить их как третий:

cat foo bar > hum      

Эта схема настолько полезна, что вы, вероятно, запомните её, даже не пытаясь. Символ перенаправления вывода, >, заставляет весь вывод отправляться в другое место, в данном случае в именованный файл. Файл будет создан, если он еще не существует, и перезаписан, если он уже существует.

5. Создание или обновление текстового файла

Используя то же направление вывода, вы можете создавать простые текстовые файлы, имея всего лишь ваш терминал и команду cat. Это может быть не самым простым методом, но, вероятно, самым эффективным, и он может быть полезен в определенных средах; ваш любимый текстовый редактор может быть не всегда доступен.

Чтобы интерактивно создать текстовый файл, начните с запуска команды cat без аргументов и перенаправьте её вывод в файл на ваш выбор, например:

cat > newfile.txt      

Ваш терминал выведет новую строку без ведущего приглашения, что указывает на то, что он находится в режиме ввода. Все, что вы здесь введете, будет отображаться в вашем терминале и вставляться в файл, пока вы не нажмете Ctrl + D в начале строки. Это сигнализирует о конце файла (EOF), после чего команда cat завершится и передаст управление оболочке.

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

cat >> notes      

Вы можете использовать эти методы, чтобы создать простой файл дел или делать заметки.

6. Передача файла команде

Наконец, самой спорной использованием cat является так называемое «бесполезное использование cat». Многие новички (и, справедливости ради, более опытные пользователи тоже) привыкают использовать этот шаблон:

cat filename | command      

Например, cat file | grep searchword или cat file | tr '!' '.'.

На самом деле, с этим нет ничего плохого, но некоторые люди очень стремятся указать на то, что существуют лучшие альтернативы. Команды, такие как grep, принимают аргументы с именем файла, поэтому grep searchword file выполняет эквивалент вывода cat, но это немного более эффективно, требует меньше ввода текста и создает меньше процессов. Некоторые команды, такие как tr, не работают с именами файлов, но вы все равно можете заставить их действовать на содержимое файла с помощью перенаправления:

command < filename      

На этот раз используется символ меньше для перенаправления ввода, но концепция остаётся такой же.

Эти эквиваленты без использования cat могут быть более читабельными, что делает их предпочтительными для использования в сценариях или документации. Однако имейте в виду, что в occasional использовании cat нет ничего плохого. Разница в использовании ресурсов минимальна на современном оборудовании, и использование cat таким образом может упростить построение цепочки команд по частям.

Самое важное, что нужно запомнить, это то, что перенаправление файлов может быть так же полезно, как и конвейеры. Легко это упустить из виду, но эта функция является одной из сильных сторон Linux, и стоит с ней познакомиться на все те случаи, когда она вам действительно понадобится.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *