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
разбивает наш трубопровод, поэтому он имеет несколько целей!
Кроме того: поскольку это вопрос о программном обеспечении * использовании * (например, как использовать командную строку как конечного пользователя), а не о вопросе о разработке программного обеспечения *, вы можете рассмотреть http: // superuser.com/ как более подходящий форум в будущем. –
Кроме того, вопрос о том, как сгенерировать имя файла с датой в нем как скрытом дополнительном вопросе, - это то, что действительно должно быть его собственным вопросом (в очень маловероятном случае, когда вы не могли найти его, и он уже ответил в нашей базе знаний). –
Я новичок, но я думаю, что я хочу бросить это сообщество, потому что каждый раз, когда я спрашиваю о помощи, когда-либо критики, спасибо, однако, – user7203212