Запись в файлы с помощью команды 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 для записи текста в файлы, проверки содержимого, объединения и добавления файлов, а также для перечисления строк и их сортировки.