Вступление
Команда cat
- это инструмент Unix, используемый для управления и
отображения содержимого файлов. Команда получила свое название от слова
«con cat enate», потому что, помимо прочего, она может объединять
файлы.
В этой статье мы рассмотрим несколько простых способов использования
этой команды для записи текста в файл с примерами. Использовать cat
очень просто, поэтому для продолжения работы не требуется никакого
предварительного программирования или опыта работы с Unix.
Основы команд cat
Вначале мы просто суммируем основы команды cat
чтобы помочь вам, если
вы никогда не использовали ее раньше или вам нужен краткий обзор.
Синтаксис
Синтаксис выглядит так:
cat [OPTION]... [FILE]...
Чтобы быстро найти синтаксис или параметры команды, запустите cat с параметром справки:
$ cat --help
Или, вы можете использовать искусственные UAL страницы:
$ 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
не содержит ничего, что вы могли бы потерять.
Теперь 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
для записи текста в файлы, проверки содержимого, объединения и
добавления файлов, а также для перечисления строк и их сортировки.