stringtranslate.com

тройник (команда)

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

Обзор

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

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

Реализации

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

Кроме того, команда sponge[9] предлагает аналогичные возможности.

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

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

Аргументы:

Флаги:

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

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

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

4DOS и 4NT

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

Аргументы:

Флаги:

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

Windows PowerShell

tee [-FilePath] <Строка> [-InputObject <PSObject>]tee -Variable <Строка> [-InputObject <PSObject>]

Аргументы:

Примечание: tee реализован как ReadOnly псевдоним команды . Внутреннее имя командлета — 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  программа.c | tee -a программа.lint    

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

cat  ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"    

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

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

ls  --color = всегда | tee > ( sed "s/\x1b[^m]*m//g" > ls.txt )      

удаляет общие управляющие коды ANSI перед записью в ls.txt, но сохраняет их для отображения. [10]

4DOS и 4NT

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

> найти "4DOS" wikipedia.txt | tee 4DOS.txt | сортировать > 4DOSsorted.txt

Windows PowerShell

ipconfig  |  tee Выходной файл . txt

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

Get-Process  |  Where-Object  {  $_ . Имя  -like  "svc*"  }  |  Tee-Object  ABC . txt  |  Where-Object  {  $_ . Handles  -gt  1000  }

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

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

Ссылки

  1. ^ "Man Page for tee (posix Section 1)". IEEE Std 1003.1, издание 2003 г., Стандарт информационных технологий — Интерфейс переносимых операционных систем (POSIX), The Open Group Base Specifications Issue 6. Получено 1 декабря 2013 г.
  2. ^ "В Unix, что означают некоторые непонятно названные команды?" . Получено 3 февраля 2012 г.
  3. ^ Пол С. Даян (1992). Гуру OS-9 - 1: Факты . Galactic Industrial Limited. ISBN 0-9519228-0-7.
  4. ^ "reactos/reactos". GitHub . 3 января 2022 г.
  5. ^ "tee: чтение из стандартного ввода и запись в стандартный вывод и файлы". www.mankier.com .
  6. ^ "Нативные порты Win32 некоторых утилит GNU". unxutils.sourceforge.net .
  7. ^ "Пакет FreeDOS ibiblio.org -- tee (Unix-подобный)". www.ibiblio.org .
  8. ^ IBM . "IBM System i Version 7.2 Programming Qshell" (PDF) . IBM . Получено 5 сентября 2020 г. .
  9. ^ "sponge(1): впитывает stdin/запись в файл - страница руководства Linux". linux.die.net .
  10. ^ "GNU Coreutils: tee invocation" . Получено 3 февраля 2016 г. .

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

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