Jump to content

кот (Unix)

(Перенаправлено с Tac (Unix) )
кот
Оригинальный автор(ы) Кен Томпсон ,
Деннис Ричи
Разработчик(и) AT&T Bell Laboratories
Первоначальный выпуск 3 ноября 1971 г .; 52 года назад ( 1971-11-03 )
Операционная система Unix , Unix-подобные , Plan 9 , Inferno , ReactOS
Платформа Кросс-платформенный
Тип Команда
Лицензия основные утилиты : GPLv3+
РеактОС: GPLv2+

cat — стандартная утилита Unix , которая последовательно читает файлы и записывает их в стандартный вывод . Название происходит от его функции объединять файлы (от латинского catenare — «связывать»). [1] [2] Он был портирован на ряд операционных систем.

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

cat был частью ранних версий Unix , например, версии 1 , и заменил pr, утилита PDP-7 и Multics для копирования одного файла на экран. [4] Его написали Кен Томпсон и Деннис Ритчи .Версия cat пакет GNU coreutils был написан Торбьорном Гранлундом и Ричардом Столлманом . [5] Версия ReactOS была написана Дэвидом Уэлчем, Семеном Новиковым и Hermès Bélusca. [6]

Со временем альтернативные утилиты, такие как tac и bat также стал доступен, принеся с собой различные новые функции. [7] [8]

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

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

The cat Утилита служит двойной цели: объединению и печати. пользователя С одним аргументом он часто используется для печати файла на эмуляторе терминала (или исторически на компьютерном терминале или телетайпе ). Имея более одного аргумента, он объединяет несколько файлов. Объединенный результат по умолчанию также выводится на терминал, но часто пользователи перенаправляют результат в другой файл. [9] Следовательно, печать одного файла на терминал является особым вариантом использования этой программы объединения. Тем не менее, это его наиболее распространенное использование. [3]

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

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

команды Синтаксис :

cat [options] [file_names]

Параметры

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

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

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

Варианты использования

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

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

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

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

CommandОбъяснение
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Запустите программу «меньше», используя в качестве входных данных объединение файлов file1 и file2.
cat file1.txt | grep exampleВыделите экземпляры слова «пример» в файле file1.txt.
command | catОтменить специальное поведение «команды» (например, пейджинг), когда она записывает непосредственно в TTY (см. UUOC ниже).

Unix-культура

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

Определение файла жаргона

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

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

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

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

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

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

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

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

cat filename | command arg1 arg2 argn

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

command arg1 arg2 argn < filename
<filename command arg1 arg2 argn

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

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

cat file | grep pattern
cat file | less

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

grep pattern file
less file

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

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

command < in | command2 > out
<in command | command2 > out

с:

cat in | command | command2 > out

См. также

[ редактировать ]
  • вставить
  • Split — команда, которая разбивает файл на части, к которым cat затем может присоединиться.
  • zcat
  • меньше
  • netcat — утилита компьютерной сети
  1. ^ «Что в Unix означают некоторые непонятно названные команды?» . Университетские службы информационных технологий . Университет Индианы.
  2. ^ Керниган, Брайан В.; Пайк, Роб (1984). Среда программирования UNIX . Аддисон-Уэсли. п. 15.
  3. ^ Jump up to: а б Пайк, Роб ; Керниган, Брайан В. Проектирование программ в среде UNIX (PDF) (Отчет). п. 3.
  4. ^ Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139.
  5. ^ cat(1) Linux пользователя по командам Руководство
  6. ^ «reactos/cat.c в мастере · реакции/реактос · GitHub» . github.com . Проверено 28 августа 2021 г.
  7. ^ «tac(1) — страница руководства Linux» . man7.org .
  8. ^ "акула/летучая мышь" . 2 декабря 2021 г. — через GitHub.
  9. ^ Руководство для программиста UNIX (PDF) . bitsavers.org (отчет). 3 ноября 1971 г. с. 32. Архивировано из оригинала (PDF) 17 июня 2006 г.
  10. ^ GNU Coreutils. «Руководство по GNU Coreutils» , GNU , дата обращения 1 марта 2017 г.
  11. ^ Страница руководства OpenBSD и версия cat GNU Core Utilites.
  12. ^ Брайан Блэкмор (5 декабря 1994 г.). «Перл или Сед?» . Группа новостей : comp.unix.shell . Проверено 12 февраля 2024 г.
  13. ^ «Определение злоупотребления Мерриам Вебстер» . Проверено 25 февраля 2021 г.
  14. ^ Нгуен, Дэн. «Стэнфордская лаборатория компьютерной журналистики» . Стэнфорд.edu . Проверено 8 октября 2017 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 67b479b296a5986f4021d73f076195e9__1720180620
URL1:https://arc.ask3.ru/arc/aa/67/e9/67b479b296a5986f4021d73f076195e9.html
Заголовок, (Title) документа по адресу, URL1:
cat (Unix) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)