Что делает команда cat в Linux: подробное объяснение для начинающих.

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

Что такое команда cat в Linux?

Команда cat (сокращение от слова «concatenate» — «склеивать») — это стандартная команда Linux, которая используется для отображения содержимого текстовых файлов прямо в терминале. Также она позволяет объединять файлы и создавать новые.

Почему команда cat полезна?

  • Простая и быстрая для просмотра небольших текстовых файлов.
  • Хороша для объединения файлов без использования дополнительных программ.
  • Позволяет легко создавать новые файлы и редактировать текст с помощью командной строки.

Основные функции команды cat

Вывод содержимого файла на экран

Самая популярная функция — вывести на экран содержимое файла. Например:

cat название_файла

команда выведет содержимое файла в окно терминала:

[root@waky practice]# cat shakespeare_part1.txt
Shall I compare thee to a summer’s day?
Thou art more lovely and more temperate:
Rough winds do shake the darling buds of May,
And summer’s lease hath all too short a date:
Sometime too hot the eye of heaven shines,
And often is his gold complexion dimm’d;
And every fair from fair sometime declines,
[root@waky practice]# 

Мы получили вывод содержимого файла shakespeare_part1.txt.

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

Можно объединить вывод сразу из нескольких файлов и вывести их подряд. Например:

cat файл1.txt файл2.txt

— команда покажет содержимое обоих файлов одно за другим:

[root@waky practice]# cat shakespeare_part1.txt shakespeare_part2.txt
Shall I compare thee to a summer’s day?
Thou art more lovely and more temperate:
Rough winds do shake the darling buds of May,
And summer’s lease hath all too short a date:
Sometime too hot the eye of heaven shines,
And often is his gold complexion dimm’d;
And every fair from fair sometime declines,
By chance or nature’s changing course untrimm’d;
But thy eternal summer shall not fade
Nor lose possession of that fair thou owest;
Nor shall Death brag thou wander’st in his shade,
When in eternal lines to time thou growest:
So long as men can breathe or eyes can see,
So long lives this and this gives life to thee.
[root@waky practice]#

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

[root@waky practice]# cat shakespeare_part2.txt shakespeare_part1.txt
By chance or nature’s changing course untrimm’d;
But thy eternal summer shall not fade
Nor lose possession of that fair thou owest;
Nor shall Death brag thou wander’st in his shade,
When in eternal lines to time thou growest:
So long as men can breathe or eyes can see,
So long lives this and this gives life to thee.
Shall I compare thee to a summer’s day?
Thou art more lovely and more temperate:
Rough winds do shake the darling buds of May,
And summer’s lease hath all too short a date:
Sometime too hot the eye of heaven shines,
And often is his gold complexion dimm’d;
And every fair from fair sometime declines,
[root@waky practice]#

От этого зависит порядок вывода.

Используя перенаправление вывода, результат исполнения можно сохранить в отдельный файл.

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

[root@waky practice]# cat shakespeare_part1.txt shakespeare_part2.txt > shakespeare.txt
[root@waky practice]#

Теперь файл shakespeare.txt содержит обе части из других файлов. > — это оператор, осуществляющий перенаправление вывода с перезаписью.

Создание новых файлов

Можно использовать cat для создания файла и ввода текста вручную.

Например:

cat > новый_файл.txt

После выполнения команды вводите текст, а чтобы закончить — нажмите Ctrl + D:

[root@waky practice]# cat > tongue_twisters.txt
Peter Piper picked a peck of pickled peppers.
[root@waky practice]#

Проверим, что наш текст записался в файл:

[root@waky practice]# cat tongue_twisters.txt
Peter Piper picked a peck of pickled peppers.
[root@waky practice]#

Дополнение файла содержимым других файлов

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

cat файл2.txt >> файл1.txt

Например:

[root@waky practice]# cat shakespeare_part2.txt >> shakespeare_part1.txt
[root@waky practice]#

Можете убедиться, теперь файл shakespeare_part1.txt содержит обе части:

[root@waky practice]# cat shakespeare_part1.txt
Shall I compare thee to a summer’s day?
Thou art more lovely and more temperate:
Rough winds do shake the darling buds of May,
And summer’s lease hath all too short a date:
Sometime too hot the eye of heaven shines,
And often is his gold complexion dimm’d;
And every fair from fair sometime declines,
By chance or nature’s changing course untrimm’d;
But thy eternal summer shall not fade
Nor lose possession of that fair thou owest;
Nor shall Death brag thou wander’st in his shade,
When in eternal lines to time thou growest:
So long as men can breathe or eyes can see,
So long lives this and this gives life to thee.
[root@waky practice]#

Как работает команда cat: подробное объяснение

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

  • Обработка аргументов — команда получает список файлов или других параметров.
  • Чтение файлов — cat последовательно открывает файлы и читает их содержимое.
  • Вывод данных — считанные данные выводятся в терминал или перенаправляются в файл.
  • Завершение работы — после обработки всех указанных файлов команда завершает свою работу.

Отдельные опции и примеры использования

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

n оказать содержимое файла с номерами строк:

cat -n файл.txt

— добавит номера строк перед каждой строкой. Например:

[root@waky practice]# cat -n shakespeare.txt
     1  Shall I compare thee to a summer’s day?
     2  Thou art more lovely and more temperate:
     3  Rough winds do shake the darling buds of May,
     4  And summer’s lease hath all too short a date:
     5  Sometime too hot the eye of heaven shines,
     6  And often is his gold complexion dimm’d;
     7  And every fair from fair sometime declines,
     8  By chance or nature’s changing course untrimm’d;
     9  But thy eternal summer shall not fade
    10  Nor lose possession of that fair thou owest;
    11  Nor shall Death brag thou wander’st in his shade,
    12  When in eternal lines to time thou growest:
    13  So long as men can breathe or eyes can see,
    14  So long lives this and this gives life to thee.
[root@waky practice]#

E — показать специальные символы:

cat -E файл.txt

— покажет символ $ в конце каждой строки, что удобно для определения пустых строк. Например:

[root@waky practice]# cat -E shakespeare_part2.txt
By chance or nature’s changing course untrimm’d;$
But thy eternal summer shall not fade$
Nor lose possession of that fair thou owest;$
Nor shall Death brag thou wander’st in his shade,$
When in eternal lines to time thou growest:$
So long as men can breathe or eyes can see,$
So long lives this and this gives life to thee.$
[root@waky practice]#

Заключение

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

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