Agora que você está trabalhando em cshell, saberia que os aliases devem ser definidos em apenas uma linha. daí o apelido que é mostrado ultrapassando o comprimento normal da linha. Isso é bom para você.
alias latest_log 'find "$LOG/tr/'date +%Y%m%d'" -name "xtest*" -printf "%Ts\t%palias latest_log 'find "$LOG/tr/'date +%Y%m%d'" -name "xtest*" -printf "%Ts\t%p%pre%" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Divida-o em pedaços para mostrar o que está fazendo:
-
O comando
find
imprime, nomes de arquivos separados por nulos com o registro de data e hora numérico juntamente com o nome do arquivo. Note que, as aspas no comandodate
foram retiradas porquedate
pode rodar muito bem sem elas, e tê-las teria tornado a cotação desnecessariamente flexível para o alias. - Os duos separados nulo (
) (nome de arquivo TAB da data e hora) são classificados a partir do primeiro campo no formato numérico reverso e terminando no segundo campo. A opção-z
sort
no comandohead -z -n 1
é separar os blocos de entrada em torno do caractere nulo em vez da nova linha padrão. - Uma vez classificadas na ordem correta, tiramos o trecho mais alto, que manteria o nome do arquivo com o último registro de data e hora por meio do comando
cut
. - Em seguida, o comando
-z
assume e retira o registro de data e hora, já que o trabalho já está pronto e não é mais necessário. Usamos a opçãocut
para lidar com a entrada separada nula para-f2
. A opçãofilename +
deve lançar oxargs -0
less -F
no próximo pipeline. - %code% estaria lendo o nome do arquivo separado por null e passaria o nome do arquivo para %code% em sua linha de comando.