2017-01-24 7 views
1

MyServer является АлиасКак отправить выход Alias ​​на экран, файл и электронную почту?

Я хотел бы отправить свой вывод на экран терминала, Файловые статистику-ДД-ММ-ГГ (с датой в названии), электронная почта

myserver | tee /mydocs/mystats/stats-dd-mm-yy.txt | less | /usr/bin/Mail -s "Admin Server Stats" "[email protected]" 

Спасибо за помощь мне

+0

Кроме того: поскольку это вопрос о программном обеспечении * использовании * (например, как использовать командную строку как конечного пользователя), а не о вопросе о разработке программного обеспечения *, вы можете рассмотреть http: // superuser.com/ как более подходящий форум в будущем. –

+0

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

+0

Я новичок, но я думаю, что я хочу бросить это сообщество, потому что каждый раз, когда я спрашиваю о помощи, когда-либо критики, спасибо, однако, – user7203212

ответ

2
date=$(date +Y-%m-%d) 
myserver | tee >(/usr/bin/Mail [email protected]) "stats-$date.txt" | less 

Это не имеет никакого отношения к псевдониму. Однако магией является подстановка процесса: >() (расширение bash и ksh) для создания файлового объекта, связанного с входом процесса. При использовании этого сценария ваш скрипт должен начинаться с #!/bin/bash, а не #!/bin/sh; и его не следует начинать с sh yourscript (что заставило бы базовый интерпретатор POSIX).

Этот синтаксис будет заменен на имя файла, как правило, на Linux формы /dev/fd/## или /proc/self/fd/##, которые при написанном перевалов контента в поток ввода - в данном случае - /usr/bin/Mail.


Некоторые дополнительные примечания:

  • YYYY-mm-dd является гораздо меньшим злом, формат файла. dd-mm-yy не сортируется правильно, и это неоднозначно с mm-dd-yy.
  • less потребности быть на конце трубопровода: Он не записывает содержимое в свой собственный стандартный вывод в форме, предназначенной для использования в программном, так что вы не можете с пользой трубы от less к чему-то еще.
  • mailтакже должен быть в конце конвейера, так как он также не записывает содержимое в его стандартный вывод. Причина, по которой наш код работает, заключается в том, что tee разбивает наш трубопровод, поэтому он имеет несколько целей!
+1

В качестве побочного примечания для ввода также существует замена процесса. Например, 'cat <<(ls /)' будет перечислять корневой каталог и выводить его вывод на 'cat'. В этом случае первый символ '<' является символом нормального перенаправления, а '<(ls /)' будет файлоподобным объектом, подключенным к выходу 'ls' и входом' cat'. – Fred

+0

Спасибо за подсказку, я еще не понял, что вы можете сделать это в комментариях. – Fred