Тройник (команда) - Tee (command)

тройник
Разработчики)AT&T Bell Laboratories Майк Паркер, Ричард Столмен, Дэвид Маккензи, Микроволновая печь, Джим Холл, Программное обеспечение JP, Microsoft
изначальный выпускИюнь 1974 г.; 46 лет назад (1974-06)
Операционная системаUnix, Unix-подобный, План 9, Inferno, ОС-9, FreeDOS, Windows, ReactOS, IBM i
ПлатформаКроссплатформенность
ТипКоманда

В вычислениях тройник это команда в интерпретаторы командной строки (снаряды ) с помощью стандартные потоки который читает стандартный ввод и записывает его как в стандартный вывод, так и в один или несколько файлов, эффективно дублируя ввод.[1] Он в основном используется вместе с трубы и фильтры. Команда названа в честь Тройник, используемый в сантехнике.[2]

Обзор

Пример использования тройник: Вывод ls -l перенаправлен на тройник который копирует их в файл file.txt и на пейджер меньше. Название тройник происходит из этой схемы - похоже на заглавную букву Т

В тройник команда обычно используется для Трещина вывод программы, чтобы ее можно было как отображать, так и сохранять в файле. Команду можно использовать для захвата промежуточного вывода до того, как данные будут изменены другой командой или программой. Команда tee читает стандартный ввод, затем записывает свое содержимое в стандартный вывод. Он одновременно копирует данные в указанный файл (ы) или переменные. Синтаксис отличается в зависимости от реализации команды.

Реализации

Команда доступна для Unix и Unix-подобный операционные системы, Микроволновая печь ОС-9,[3] ДОС (например. 4ДОС, FreeDOS ), Майкрософт Виндоус (например. 4NT, Windows PowerShell ), и ReactOS.[4] Linux тройник команду написал Майк Паркер, Ричард Столмен, и Дэвид Маккензи.[5] В FreeDOS версия была разработана Джим Холл и под лицензией GPL.[6]В тройник команда также была перенесена в IBM i Операционная система.[7]

Дополнительно губка[8] команда предлагает аналогичные возможности.

Unix и Unix-подобные

tee [-a] [-i] [Файл ...]

Аргументы:

  • Файл ... Список файлов, каждый из которых получает вывод.

Флаги:

  • Добавляет вывод в каждый файл, а не перезаписывает его.
  • Игнорирует прерывания.

Команда возвращает следующие значения выхода (статус выхода ):

  • 0 Стандартный ввод был успешно скопирован во все файлы вывода.
  • > 0 Произошла ошибка.

С помощью замена процесса позволяет нескольким процессам читать стандартный вывод исходного процесса. Прочтите этот пример из GNU Coreutils, вызов tee.

Примечание. Если запись в любой успешно открытый файловый операнд не удалась, запись в другие успешно открытые файловые операнды будет продолжена, и стандартный вывод будет продолжен, но значение выхода будет> 0.

4DOS и 4NT

Файл TEE [/ A] ...

Аргументы:

  • файл Один или несколько файлов, которые получат вывод «tee'd».

Флаги:

  • / А Добавляйте содержимое конвейера к выходным файлам, а не перезаписывайте их.

Примечание: когда тройник используется с конвейером, вывод предыдущей команды записывается в временный файл. Когда эта команда завершится, тройник читает временный файл, отображает вывод и записывает его в файл (ы), указанный как аргумент командной строки.

Windows PowerShell

тройник [-FilePath]  [-InputObject ] tee -Variable  [-InputObject ]

Аргументы:

  • -InputObject Задает объект, вводимый командлету. Параметр принимает переменные, содержащие объекты и команды или выражения, возвращающие объекты.
  • -FilePath Задает файл, в котором командлет хранит объект. Параметр принимает символы подстановки которые разрешаются в один файл.
  • -Переменная Ссылка на входные объекты будет присвоена указанной переменной.

Заметка: тройник реализуется как Только для чтения псевдоним команды. Внутреннее имя командлета Microsoft.PowerShell.Utility Tee-Object.

Примеры

Unix и Unix-подобные

  • Чтобы просмотреть и сохранить вывод команды (ворсинок ) в то же время:
lint program.c | tee program.lint

Это отображает стандартный вывод команды lint program.c на компьютере, и в то же время сохраняет его копию в файле program.lint. Если файл с именем program.lint уже существует, он удаляется и заменяется.

Точно так же выходные потоки stdout и stderr могут быть перенаправлены на стандартный вывод и program.lint с использованием перенаправления потока:

lint program.c 2>&1 | tee program.lint
  • Чтобы просмотреть и добавить вывод команды в существующий файл:
lint program.c | tee -a program.lint

Это отображает стандартный вывод lint program.c на компьютере и в то же время добавляет ее копию в конец program.lint файл. Если program.lint файл не существует, он создается.

  • Чтобы разрешить повышение разрешений:
кошка ~ / .ssh / id_rsa.pub | ssh admin @ server "sudo tee -a /root/.ssh/authorized_keys2> / dev / null"

Этот пример показывает тройник используется, чтобы обойти внутреннее ограничение в судо команда. судо не может передать стандартный вывод в файл. Выгрузив его поток stdout в / dev / null, мы также подавляем зеркальный вывод в консоли. Приведенная выше команда предоставляет текущему пользователю root-доступ к серверу через ssh путем установки открытого ключа пользователя в список авторизации ключей сервера.

В Баш, вывод может быть фильтрованный перед записью в файл - без влияния на отображаемый результат - с помощью замена процесса. Например,

ls - цвет=всегда | тройник>(sed "s /  x1b [^ m] * m // g" > ls.txt)

удаляет общие Коды выхода ANSI прежде чем писать ls.txt, но сохраняет их для отображения.[9]

4DOS и 4NT

В этом примере выполняется поиск файла wikipedia.txt для любых строк, содержащих строку "4ДОС ", копирует совпадающие строки в 4DOS.txt, сортирует строки и записывает их в выходной файл 4DOSsorted.txt:

найти «4ДОС» wikipedia.txt | тройник 4DOS.txt | Сортировать > 4DOSsorted.txt

Windows PowerShell

  • Чтобы одновременно просмотреть и сохранить вывод команды:
ipconfig | тройник Выходной файл.текст

Это отображает стандартный вывод команды ipconfig на окно консоли, и одновременно сохраняет его копию в файле OutputFile.txt.

  • Для отображения и сохранения всех запущенных процессы, отфильтрованы так, что только программы, начинающиеся с svc и имеющие более 1000 ручки выводятся:
Get-Process | Где-объект { $_.имя -подобно "svc *" } | Тройник-Объект ABC.текст | Где-объект { $_.Ручки -gt 1000 }

В этом примере показано, что входной канал для тройник можно фильтровать и это тройник используется для отображения этого вывода, который снова фильтруется, чтобы отображались только процессы, имеющие более 1000 дескрипторов, и записывает нефильтрованный вывод в файл ABC.txt.

Смотрите также

Рекомендации

  1. ^ "Страница руководства для тройника (позиция 1)". IEEE Std 1003.1, издание 2003 г., Стандарт информационных технологий - интерфейс переносимой операционной системы (POSIX), Базовые спецификации Open Group, выпуск 6. Получено 1 декабря 2013.
  2. ^ «Что означают некоторые команды с неясными названиями в Unix?». Получено 3 февраля 2012.
  3. ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты. Galactic Industrial Limited. ISBN  0-9519228-0-7.
  4. ^ "reactos / reactos". GitHub.
  5. ^ "tee (1): читать из стандартного ввода / писать в стандартный вывод / файлы - страница руководства Linux". linux.die.net.
  6. ^ "Пакет ibiblio.org FreeDOS - tee (Unix-подобный)". www.ibiblio.org.
  7. ^ IBM. "Qshell для программирования IBM System i версии 7.2" (PDF). Получено 5 сентября 2020.
  8. ^ "губка (1): впитать стандартный ввод / записать в файл - справочная страница Linux". linux.die.net.
  9. ^ "GNU Coreutils: вызов тройника". Получено 3 февраля 2016.

дальнейшее чтение

внешняя ссылка