tee
tee в команда, выводит на экран, или же перенаправляет, выходной материал команды и копирует его в файл или в переменную. В первую очередь, команда используется в привязке с перенаправлениями и фильтрами. Используется во множестве оболочек операционных систем, таких как Unix shells, 4DOS/4NT и Windows PowerShell.
Содержание |
[править] Назначение и синтаксис
tee используется для разделения выводимых программой данных, таким образом данные могут быть использованы для вывода на дисплей и сохранены в файл. Также команда может быть использована для получения промежуточных данных, до того как они будут изменены другой программой или командой. Команда tee считывает стандартный ввод (stdin), после чего записывает его в стандартный вывод (stdout) и одновременно копирует его в подготовленный файл или переменную. Синтаксис различается в соответствии с местом использования команды.
[править] В UNIX
tee [ -a ] [ -i ] [ File ... ]
Переменные:
FileОдин, или более, файл который примет данные от tee.
Флаги:
-aДописать выходящие данные в конец файла, не переписывая его содержимого.-iИгнорировать ошибки.
По окончании команда возвращает следующие значения состояния выхода:
- 0 Стандартный поток ввода (stdin) был успешно записан во все принимающие файлы.
- >0 В случае ошибки.
Примечание: Если при записи в любой, удачно открытый файл, операнд не удался, данные записываются в следующий удачно открытый файл, операнд и стандартный поток вывода (stdout) завершаются, но состояние выхода будет >0.
[править] Примеры
[править] В UNIX
- Чтобы одновременно увидеть и сохранить выходные данные:
lint program.c | tee program.lint
Эта команда покажет стандартные выходящие данные команды lint program.c на средстве вывода, в то же самое время она сохранит полученные данные в файл program.lint. Если такой файл уже существует, он будет переписан.
- Чтобы получить данные от команды и дописать их в существующий файл:
lint program.c | tee -a program.lint
Как и в предыдущем примере, на экран будут выведены данные от команды lint program.c, после чего эти данные будут дописаны в конец файла program.lint. Если такой файл не существует, он будет создан.
- Использование совместно с sudo:
echo "Body of file..." | sudo tee root_owned_file > /dev/null
В этом примере демонстрируется, как при помощи tee обойти ограничения команды sudo, за счёт которых она не может перенаправлять вывод (stdout) в файл. А дальнейшее перенаправление в /dev/null позволит избежать вывода текста на консоль.
- Перенаправление STDERR:
ls ./ qwerty 2>&1 | tee ls.log
По умолчанию команда tee записывает в файл только данные от STDOUT, поэтому, если файл «qwerty» отсутствует в текущем каталоге, в файле ls.log будет перечень имеющихся файлов и каталогов и не будет записи о не найденном файле. На экране же будут отображаться выводы как STDOUT, так и STDERR. Если в файл нужно включить так же и данные из STDERR, то необходимо, как в примере выше, перенаправить STDERR на STDOUT.
| Стандартные программы UNIX (все программы) | |
|---|---|
| Файловые системы | chroot dd df fdisk fsck mkisofs mkswap mount umount rehash |
| Файлы и каталоги | cat chattr cd chmod chown chgrp cksum cmp cp diff du file fuser ln ls lsof mkdir mv od pwd rm rmdir split touch |
| Процессы | at cron exit kill killall nice nohup pgrep pidof pkill ps renice sleep time top wait watch |
| Пользователи | env finger id last logname mesg passwd su sudo uptime w wall who whoami write |
| Сеть | ftp host ifconfig netcat netstat nmap nslookup ping rlogin SSH traceroute wget |
| Тексты | AWK comm cut ed ex expand unexpand fmt head iconv join less more paste pr sed sort tac tail tr uniq wc xargs |
| Командная строка | alias basename bash bind dirname echo expr false printf test true unset |
| Поиск | find grep strings whereis which |
| Разное | banner bc cal date help lp man history size tee uname yes reboot |