cat (Unix) - cat (Unix)

редактировать
cat
Первоначальный автор (ы) Кен Томпсон,. Деннис Ричи
Разработчик (и) ATT Bell Laboratories
Первоначальный выпуск3 ноября 1971 г.; 48 лет назад (1971-11-03)
Операционная система Unix, Unix-like, Plan 9, Inferno
Тип Command

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

Содержание

  • 1 История
  • 2 Использование
    • 2.1 Параметры
  • 3 Сценарии использования
  • 4 Примеры
  • 5 Культура Unix
    • 5.1 Определение жаргонного файла
    • 5.2 Бесполезное использование cat
  • 6 tac
  • 7 См. также
  • 8 Ссылки
  • 9 Внешние ссылки

История

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

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

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

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

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

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

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

Параметры

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

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

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

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 ниже)

Культура Unix

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

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

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

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

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

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

Бесполезное использование 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>out out

с:

cat in | command | command2>out

tac

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

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

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

См. также

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

Ссылки

Внешние ссылки

В Викибуке Руководство по Unix есть страница по теме: Команды
Последняя правка сделана 2021-05-14 11:48:54
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте