Первоначальный автор (ы) | Кен Томпсон,. Деннис Ричи |
---|---|
Разработчик (и) | ATT Bell Laboratories |
Первоначальный выпуск | 3 ноября 1971 г.; 48 лет назад (1971-11-03) |
Операционная система | Unix, Unix-like, Plan 9, Inferno |
Тип | Command |
cat
- это стандартная утилита Unix, которая читает файлы последовательно, записывая их в стандартный вывод. Название происходит от его функции con cat enate файлов.
cat
был частью ранних версий Unix, например, Версия 1 и замененные pr
, PDP-7 и Multics утилитой для копирования одного файла на экран.
Версия cat
, входящая в состав GNU coreutils, была написана Торбьорном Гранлундом и Ричардом Столлманом.
Единая спецификация Unix определяет операцию cat
для чтения файлов в последовательности, указанной в его аргументах, и записи их содержимого в стандартный вывод в той же последовательности. Спецификация требует поддержки одного флага опции, u для небуферизованного вывода, что означает, что каждый байт записывается после того, как он был прочитан. Некоторые операционные системы, например, использующие GNU Core Utilities, делают это по умолчанию и игнорируют этот флаг.
Если одно из имен файлов ввода указано как одиночный дефис (-), то cat
читает из стандартного ввода в этой точке последовательности. Если файлы не указаны, cat
читает только со стандартного ввода.
Синтаксис команды- :
cat [параметры] [имена_файлов]
Пример некоторых параметры cat
:
cat
можно использовать для передачи файла в программу, которая ожидает в своем файле обычный текст или двоичные данные. входной поток. cat
не уничтожает нетекстовые байты при объединении и выводе. Таким образом, его t Два основных варианта использования - это текстовые файлы и определенные форматно-совместимые типы двоичных файлов.
Объединение текста ограничено текстовыми файлами с использованием той же устаревшей кодировки, например, ASCII. cat
не предоставляет способ объединения текстовых файлов Unicode, имеющих метку порядка байтов , или файлов, использующих разные текстовые кодировки друг от друга.
Для многих наборов структурированных двоичных данных результирующий объединенный файл может быть недействительным; например, если файл имеет уникальный верхний или нижний колонтитул, результат будет ложно дублировать их. Однако для некоторых форматов мультимедийных цифровых контейнеров результирующий файл действителен, и поэтому cat
обеспечивает эффективные средства добавления файлов. Видеопотоки могут быть ярким примером файлов, которые cat
можно без проблем объединить, например форматы программный поток MPEG (MPEG-1 и MPEG-2) и DV (цифровое видео), которые по сути представляют собой простые потоки пакетов.
Команда | Пояснение |
---|---|
cat file1.txt | Показать содержимое файла |
cat file1.txt file2.txt | Объединить два текстовых файла и отобразить результат в терминале |
cat file1.txt file2.txt>newcombinedfile.txt | Объедините два текстовых файла и запишите их в новый файл |
cat>newfile.txt | Создайте файл с именем newfile.txt. Введите желаемый ввод и нажмите CTRL + D для завершения. Текст будет в файле newfile.txt. |
cat -n file1.txt file2.txt>newnumberedfile.txt | Некоторые реализации cat с опцией -n также могут нумеровать строки |
cat file1.txt>file2.txt | Копировать содержимое файла file1.txt в file2.txt |
cat file1.txt>>file2.txt | Добавить содержимое file1.txt в file2.txt |
cat file1.txt file2.txt file3.txt | sort>test4 | Объедините файлы, отсортируйте полный набор строк и запишите результат во вновь созданный файл |
cat file1.txt file2.txt | less | Запустить программу "less" с объединением файлов file1 и file2 в качестве входных данных |
команда | cat | Отмена особого поведения "команды" (например, разбиение на страницы) при записи непосредственно в TTY (см. UUOC ниже) |
В файле жаргона версии 4.4.7 это указано как определение cat
:
Среди поклонников Unix cat (1)считается отличным примером дизайна пользовательского интерфейса, поскольку он доставляет содержимое файла без такой многословности. как интервал или заголовки между файлами, и потому что он не требует, чтобы файлы состояли из строк текста, но работает с любыми типами данных.
Среди критиков Unix, cat (1)считается каноническим примером плохого дизайна пользовательского интерфейса из-за его ужасно неочевидного названия. Он гораздо чаще используется для преобразования одного файла в стандартный вывод, чем для объединения двух или более файлов. Имя catдля первой операции столь же неинтуитивно, как, скажем, LISP cdr .
Бесполезное использование cat (UUOC) - это распространенный жаргон Unix для конструкций командной строки, которые обеспечивают только удобство для пользователя. Это также называется «жестоким обращением с кошками». Действие по фиксации экземпляров UUOC иногда называют демоггификацией. В награде приведен пример типичного злоупотребления cat
:
cat filename | command arg1 arg2 argn
Это можно переписать, используя вместо этого перенаправление из stdin в любой из следующих форм (первая более традиционна):
command arg1 arg2 argn < filenameПомимо других преимуществ, формы перенаправления ввода позволяют команде выполнять произвольный доступ к файлу, тогда как примеры
cat
этого не делают. Это связано с тем, что форма перенаправления открывает файл как файловый дескриптор stdin, к которому команда может получить полный доступ, а формаcat
просто предоставляет данные в виде потока байтов.Другой распространенный случай, когда
cat
не нужен, - это когда команда по умолчанию работает на стандартном вводе, но будет читать из файла, если имя файла указано в качестве аргумента. Так обстоит дело со многими общими командами; следующие примерыcat "$ file" | grep "$ pattern" cat "$ file" | lessвместо этого можно записать как
grep "$ pattern" "$ file" less "$ file"Обычное интерактивное использование
cat
для одного файла - это вывод содержимого файла на стандартный вывод. Однако, если вывод передается по конвейеру или перенаправляется,cat
не нужен.A
cat
, написанный с помощью UUOC, может быть предпочтительнее по причинам удобочитаемости, поскольку чтение конвейерного потока слева направо может быть проще для понимания. Кроме того, одно неверное использование символа перенаправления ">" вместо "<" (often adjacent on keyboards) may permanently delete the content of a file, in other words затирание, и один из способов избежать этого - использоватьcat
с конвейерами. Сравните:команда < in | command2>outout с:
cat in | command | command2>outtac
tac - это Команда Linux, которая позволяет просматривать файлы построчно, начиная с последней строки (tac не меняет содержимое каждой отдельной строки, а только порядок, в котором эти строки представлены). Она названа по аналогии с
cat
.Использование:
Использование: tac [ОПЦИЯ]... [ФАЙЛ]... Записывать каждый ФАЙЛ в стандартный вывод, последняя строка первой. Без ФАЙЛА или когда ФАЙЛ является -, читать стандартный ввод. Обязательные аргументы для длинных опций являются обязательными и для коротких опций. -b, --before прикрепить разделитель до, а не после -r, --regex интерпретировать разделитель как регулярное выражение -s, --separator = STRING использовать STRING в качестве разделителя вместо новой строки --help отобразить эту справку и выйти --version информация о версии вывода n и выйдите изСм. также
Ссылки
Внешние ссылки
В Викибуке Руководство по Unix есть страница по теме: Команды
cat
: объединить и распечатать files - Commands Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group- UNIX Style, или cat -v Считается вредным - Статья Роба Пайка о собственном Разработка команд Unix на примере cat.
- cat (1) исходная страница руководства в Первом издании Unix.
cat(1)
: объединение и запись файлов - GNU Coreutils referencecat(1)
: объединение и печать файлов - OpenBSD Общие команды Руководствоcat (1)
– FreeBSD Общие команды Руководствоcat (1)
– Plan 9 Руководство программиста, том 1tac (1)
: объединять и записывать файлы в обратном порядке - GNU Coreutil s ссылка