Команда tee - вывод stdin на экран и в файл
Еще до курсов Linux задавал себе вопрос как вывод какой либо команды записывать в файл и одновременно выводить на экран. Например, пингуем какой-нибудь хост и нужно видеть глазами время отклика, и в то же время сохранить в файл все, что выводит команда ping. Если написать
1 | $ ping igorka.com.ua > ping.txt |
то мы вывод команды ping сохраним в файл ping.txt, но не будем видеть что команда выводит на экране монитора.
И вот на курсах Linux на одной лекции преподаватель показал как сделать такую вещь. В конспект я записал, но впоследствии забыл в какой теме, потом лень было искать, а сегодня наконец решил все таки найти эту запись. И нашел.
Так вот для того чтобы одновременно выводить stdout на экран и записывать его в файл можно воспользоваться командой tee. Команда tee свой входящий поток (stdin), выводит на экран монитора (в стандартный stdout) и параллельно записывает в указанный файл.
1 | $ ping igorka.com.ua | tee pingigorka.txt |
Записав такую конструкцию видим на экране вывод команды ping, и в это же время все что выводит ping записывается с помощью tee в файл pingigorka.txt.
При такой записи если файл с указанным именем существует, он будет перезаписан. Если информацию необходимо добавить в уже существующий файл, значит записываем команду tee с опцией -a или –append:
1 | $ ping igorka.com.ua | tee -a pingigorka.txt |
Александр:
Действительно удобный способ. До того как прочитал эту статью использовал tail с параметром -f. Но раз есть специальная команда буду юзать её. Спасибо.
Ответить
6 октября 2010, 5:05CYBERGROM:
Спасибо добрый человек! =)
Очень помогло.
Ответить
28 мая 2012, 10:30