Запись в файлы с помощью команды cat в Linux
Команда cat
представляет собой инструмент Unix, используемый для управления и отображения содержимого файлов. Команда получила свое название от слова «concatenate», потому что, помимо прочего, она может объединять файлы.
В этой статье мы рассмотрим несколько простых способов использования этой команды для записи текста в файл с примерами. Использование cat
очень простое, поэтому для продолжения работы не требуется никакого предварительного программирования или опыта работы с Unix.
Основы команд cat
Начнем с того, что мы просто опишем основы команды cat
, чтобы помочь вам, если вы никогда не использовали ее раньше или вам нужен краткий обзор.
Синтаксис
Синтаксис выглядит так:
cat [OPTION]... [FILE]...
Чтобы быстро найти синтаксис или параметры команды, запустите cat с параметром справки:
cat --help
Или, вы можете использовать:
man cat
Эти команды должны отображать следующий список параметров:
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version output version information and exit
Отображение содержимого файла на стандартном выводе
Чтобы вывести содержимое файла на стандартный вывод, просто назовите файл, который хотите отобразить:
cat filename1
Если файл находится в другом каталоге, вам нужно указать его:
cat /dir1/dir2/filename1
Мы ожидаем увидеть содержимое этого файла, распечатанное на стандартный вывод, в данном случае - терминал:
Content of filename1!
Это наиболее распространенное использование команды cat, поскольку она позволяет легко просматривать содержимое файла, не открывая текстовый редактор.
Запись текста в файл с помощью cat
Чтобы перенаправить вывод команды cat
из стандартного вывода в файл, мы можем использовать оператор перенаправления вывода >
:
cat filename1 > filename2
Это приведет к замене содержимого filename2
на содержимое filename1
, поэтому убедитесь, что он не содержит ничего, что вы бы не хотели потерять. Теперь filename2
содержит:
Content of filename1!
Оператор перенаправления вывода перенаправит вывод любой вызываемой нами команды. Например, давайте попробуем это с помощью команды pwd
, которая печатает имя текущего рабочего каталога:
pwd > testfile
Если мы посмотрим сейчас на testfile
:
cat testfile
Он содержит путь к текущему рабочему каталогу:
/home/kristina
Если файл, на который вы перенаправляете, не существует, будет создан файл с таким именем:
cat filename1 > newfilename
Объединение файлов с помощью cat
Объединить несколько файлов с помощью cat
очень просто - просто перечислите файлы в желаемом порядке:
cat filename1 filename2 > outputfile
cat outputfile
Этот код берет файлы filename1
и filename2
, сцепляет их и выводит на новый outputfile
:
Content of filename1!
Content of filename2!
Стандартный ввод между файлами
Когда имя входного файла отсутствует в списке, cat
начинает чтение со стандартного ввода до тех пор, пока не достигнет EOF
(конца файла). Сигнал о конце файла отправляется ctrl+d
в командной строке:
$ cat > outputfile
Hello
World
$ cat outputfile
Это выведет:
Hello
World
Мы даже можем добавить текст из стандартного ввода между файлами, которые мы хотим объединить, используя -
, чтобы указать, где мы ожидаем стандартный ввод. Если у нас есть такие файлы, как filename1
, filename2
и filename3
, и нам нужен текст из стандартного ввода между filename1
и filename2
, мы должны написать:
$ cat filename1 - filename2 filename3 > output
Text from standard input!
$ cat output
Проверив output
, мы увидим что-то вроде:
Content of filename1!
Text from standard input!
Content of filename2!
Content of filename3!
Добавление файлов с помощью cat
В предыдущих примерах использование оператора перенаправления отбрасывало предыдущее содержимое файла output
. Что, если мы хотим добавить новый контент к старому? Для добавления файлов мы используем оператор >>
:
cat filename1 filename2 >> output
cat output
И это должно привести к:
Original output file contents.
Content of filename1!
Content of filename2!
Объединение содержимого всего каталога файлов с помощью cat
Чтобы объединить все содержимое всех файлов в каталоге, мы используем подстановочный знак *
:
cat /dir1/dir2/* > output
Чтобы объединить все содержимое всех файлов в текущем рабочем каталоге, мы будем использовать:
cat * > output
*
также можно использовать для объединения всех файлов с одинаковым расширением:
cat *.txt > output
Перечисление номеров строк
Перечисление всех строк вывода осуществляется с помощью опции -n
:
cat -n filename1 filename2 filename3 > output
cat output
Что бы написать что-то вроде:
1 Content of filename1!
2 Content of filename2!
3 Content of filename3!
Напишите $ в конце каждой строки
В опции -E
знаменует конец каждой строки в файле с $
:
cat -E filename1 filename2 filename3 > output
cat output
Сортировка строк составных файлов по конвейеру
Это немного обман. Команда cat
не может сортировать, но для этого мы можем использовать конвейер. Команда канала (|
) используется для превращения вывода одной команды во ввод другой. Чтобы отсортировать строки файла, мы будем использовать обе cat
и еще одну команду sort
:
cat filename2 filename3 filename1 | sort > output
cat output
Это приводит к:
Content of filename1!
Content of filename2!
Content of filename3!
Вывод
Cat - это простой, но мощный инструмент Unix, который предустановлен в большинстве систем. Его можно использовать отдельно или в сочетании с другими командами с помощью каналов. Первоначально созданный Кеном Томпсоном и Деннисом Ритчи в 1971 году, cat
простой в использовании и интуитивно понятный функционал выдерживает испытание временем.
В этой статье мы изучили некоторые возможности использования команды cat
для записи текста в файлы, проверки содержимого, объединения и добавления файлов, а также для перечисления строк и их сортировки.