Para que o alias gere um diretório em / tmp com base na data de hoje, no formato /tmp/YYYY-MM-DD-HH
(seguido por am ou pm), salve toda a saída intermediária em arquivos separados:
alias analyze='d=$(date +"/tmp/%Y-%m-%H%p"); mkdir "$d" && fetch_data | tee "$d/fetch_data.txt" | prog1 | tee "$d/prog1.txt" | prog2 | tee "$d/prog2.txt" | prog3 > "$d/result.txt"'
Ou dividido em várias linhas:
alias analyze='
d=$(date +"/tmp/%Y-%m-%H%p")
mkdir "$d" &&
fetch_data | tee "$d/fetch_data.txt" |
prog1 | tee "$d/prog1.txt" |
prog2 | tee "$d/prog2.txt" |
prog3 > "$d/result.txt"
'
Isso depende de date
para gerar o nome / modelo de diretório e o utilitário tee
para duplicar os dados recebidos em um arquivo, bem como passá-lo ao longo do pipeline.
Um exemplo de execução (com programas criados substituídos por fetch_data & etc):
alias a='
d=$(date +"/tmp/%Y-%m-%H%p")
mkdir "$d" &&
seq 10 | tee "$d/seq.out" |
head -6 | tee "$d/head.out" |
sed s/3/j/ | tee "$d/sed.out" |
tail -4 > "$d/result.txt"
'
Com os resultados:
$ ls /tmp/2017-10-19PM/
head.out result.txt sed.out seq.out
$ cat /tmp/2017-10-19PM/seq.out
1
2
3
4
5
6
7
8
9
10
$ cat /tmp/2017-10-19PM/head.out
1
2
3
4
5
6
$ cat /tmp/2017-10-19PM/sed.out
1
2
j
4
5
6
$ cat /tmp/2017-10-19PM/result.txt
j
4
5
6