Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

cat- это стандартная утилита Unix, которая последовательно читает файлы и записывает их на стандартный вывод . Название происходит от его функции к кон кошачьих файлов Enate.

История [ править ]

catбыл частью ранних версий Unix , например, версии 1 , и заменил prсобой утилиту PDP-7 и Multics для копирования одного файла на экран. [1]

catВстроенная в GNU coreutils версия была написана Торбьорном Гранлундом и Ричардом Столлманом . [2]

Использование [ править ]

Спецификация Single Unix определяет операцию catчтения файлов в последовательности, указанной в ее аргументах, и записи их содержимого в стандартный вывод в той же последовательности. Спецификация требует поддержки одного флага опции u для небуферизованного вывода, что означает, что каждый байт записывается после того, как он был прочитан. Некоторые операционные системы, например, использующие GNU Core Utilities , делают это по умолчанию и игнорируют этот флаг. [3]

Если одно из имен файлов ввода указано в виде одного дефиса ( - ), тогда выполняется catчтение из стандартного ввода в этой точке последовательности. Если файлы не указаны, выполняется catчтение только со стандартного ввода.

Command- синтаксис является:

кошка [параметры] [имена_файлов]

Параметры [ редактировать ]

Пример некоторых catвариантов: [4]

  • -b(GNU:) --number-nonblank, количество непустых строк вывода
  • -eподразумевает, -vно также отображает символы конца строки как$(Только GNU: -Eто же самое, но без намека -v)
  • -n(GNU :) --number, пронумеровать все выходные строки
  • -s(GNU :) --squeeze-blank, сжать несколько смежных пустых строк
  • -tподразумевает -v, но также отображать вкладки как^ Я(GNU: -Tто же самое, но без намека -v)
  • -uиспользовать небуферизованный ввод-вывод для стандартного вывода. POSIX не определяет поведение без этой опции.
  • -v(GNU --show-nonprinting:), отображает непечатаемые символы, за исключением табуляции и символа конца строки

Сценарии использования [ править ]

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

Объединение текста ограничено текстовыми файлами, использующими ту же устаревшую кодировку, например, ASCII . catне предоставляет способ объединения текстовых файлов Unicode, имеющих метку порядка байтов, или файлов, использующих разные текстовые кодировки друг от друга.

Для многих наборов структурированных двоичных данных результирующий объединенный файл может быть недействительным; например, если файл имеет уникальный верхний или нижний колонтитул, результат будет ложно дублировать их. Однако для некоторых форматов мультимедийных цифровых контейнеров результирующий файл действителен и, таким образом, catобеспечивает эффективные средства добавления файлов. Видеопотоки могут быть важным примером файлов, которые catмогут без проблем объединяться, например, форматы программного потока MPEG (MPEG-1 и MPEG-2) и DV (цифровое видео), которые по сути являются простыми потоками пакетов.

Примеры [ править ]

Культура Unix [ править ]

Определение файла жаргона [ править ]

Версия файла жаргона 4.4.7 перечисляет это как определение cat:

  1. Выводить весь файл на экран или в другой приемник вывода без паузы (синхр. Взрыв).
  2. Кроме того, чтобы сбрасывать большие объемы данных на неподготовленную цель или без намерения внимательно ее просматривать. Использование: считается глупым. Редко за пределами Unix сайтов. Смотрите также dd, BLT .

Среди поклонников Unix cat(1)он считается отличным примером дизайна пользовательского интерфейса , потому что он доставляет содержимое файла без такой многословности, как интервалы или заголовки между файлами, и потому что он не требует, чтобы файлы состояли из строк текста, но работает с любые данные.

Среди критиков Unix cat(1)он считается каноническим примером плохого дизайна пользовательского интерфейса из-за его ужасно неочевидного названия. Он гораздо чаще используется для вывода одного файла на стандартный вывод, чем для объединения двух или более файлов. Имя catдля бывшей операции столь же неинтуитивное , как, скажем, LISP «с cdr.

Бесполезное использование кота [ править ]

Бесполезное использование cat ( UUOC ) - это распространенный жаргон Unix для конструкций командной строки, которые предоставляют пользователю только функцию удобства. [5] В вычислительной технике слово «злоупотребление» [6] во втором смысле определения используется, чтобы принизить чрезмерное или ненужное использование языковой конструкции; таким образом, злоупотребление catиногда называют «жестоким обращением с кошкой». В catнаграде приводится пример распространенного злоупотребления:

кошка имя файла | команда arg1 arg2 argn

Это может быть переписано с использованием перенаправления из стандартного ввода , а не в любом из следующих форм (первый является более традиционным):

 команда arg1 arg2 argn <имя файла <имя файла команда arg1 arg2 argn

Помимо других преимуществ, формы перенаправления ввода позволяют команде выполнять произвольный доступ к файлу, тогда как catпримеры этого не делают. Это связано с тем, что форма перенаправления открывает файл как дескриптор файла stdin, к которому команда может получить полный доступ, в то время как catформа просто предоставляет данные в виде потока байтов.

Другой распространенный случай, когда в catэтом нет необходимости, - это когда команда по умолчанию работает со стандартным вводом, но будет читать из файла, если имя файла указано в качестве аргумента. Так обстоит дело со многими распространенными командами; следующие примеры

кот "$ file" | grep "$ шаблон" кот "$ file" | меньше

вместо этого можно записать как

 grep "$ шаблон" "$ файл" меньше "$ file"

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

catНаписано с UUOC еще может быть предпочтительным для удобства понимания, так как чтение конвейерного потока слева направо может быть проще концептуализация. [7] Кроме того, одно неправильное использование символа перенаправления ">" вместо "<" (часто рядом на клавиатуре) может навсегда удалить содержимое файла, другими словами, затирание , и один из способов избежать этого - использовать catс трубы. Сравнивать:

команда <в | команда2> из <в команде | команда2> из

с:

кот в | команда | команда2> из

tac [ править ]

tac - это команда Linux, которая позволяет просматривать файлы построчно, начиная с последней строки. (tac не меняет содержимое каждой отдельной строки, а только порядок, в котором строки представлены.) Он назван по аналогии с cat.

Использование:

Использование: tac [ОПЦИЯ] ... [ФАЙЛ] ...Запишите каждый ФАЙЛ в стандартный вывод, сначала последняя строка.Без ФАЙЛА или когда ФАЙЛ равен -, читать стандартный ввод.Обязательные аргументы для длинных опций являются обязательными и для коротких опций. -b, --before добавить разделитель до, а не после -r, --regex интерпретировать разделитель как регулярное выражение -s, --separator = СТРОКА использовать СТРОКУ в качестве разделителя вместо новой строки --help отобразить эту справку и выйти --version вывести информацию о версии и выйти

См. Также [ править ]

  • вставить
  • split , команда, которая разбивает файл на части, к которым cat может затем присоединиться.
  • zcat
  • меньше

Ссылки [ править ]

  1. Перейти ↑ McIlroy, MD (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139.
  2. ^ https://linux.die.net/man/1/cat
  3. ^ GNU Coreutils. «Руководство по GNU Coreutils» , GNU , последнее посещение - 1 марта2017 г.
  4. ^ Страница руководства OpenBSD и версия cat для GNU Core Utiltites
  5. ^ comp.unix.shell. "Ранний пример награждения UUOC (1994)" , comp.unix.shell через группы Google , получено 1 марта 2017 г.
  6. ^ "Определение жестокого обращения Мерриам Вебстер" . Проверено 25 февраля 2021 .
  7. ^ Нгуен, Дэн. "Стэнфордская лаборатория вычислительной журналистики" . stanford.edu . Проверено 8 октября 2017 .

Внешние ссылки [ править ]

  • cat: объединение и печать файлов - Справочник по командам и служебным программам, спецификация Single UNIX , выпуск 7 от Open Group
  • Стиль UNIX, или cat -v считается вредным - статья Роба Пайка о правильном проектировании команд Unix на примере cat.
  • cat (1) исходная страница руководства в Первой редакции Unix .
  • cat(1): объединение и запись файлов -  справочник GNU Coreutils
  • cat(1): объединение и печать файлов -  Руководство по основным командам OpenBSD
  • cat(1) -  Руководство по основным командам FreeBSD
  • cat(1) -  Руководство программиста Plan 9 , том 1
  • tac(1): объединять и записывать файлы в обратном порядке -  справочник GNU Coreutils