Como posso melhorar o alias abaixo?

0

Eu quero executar o comando less -F no arquivo de log atualizado mais recente de um binário (que cria logs com nomes que começam com xtest* ), que está no diretório logs. Consegui criar o alias abaixo em csh , mas acho que posso melhorar isso.

find $LOG/tr/'date +"%Y%m%d"' -name xtest\* -print | xargs ls -rt | tail -1 | xargs less -F
    
por BreakBadSP 19.07.2018 / 09:46

1 resposta

1

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%p
alias 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 comando date foram retiradas porque date pode rodar muito bem sem elas, e tê-las teria tornado a cotação desnecessariamente flexível para o alias.
  • Os duos separados nulo ( -z ) (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 sort no comando head -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ção cut para lidar com a entrada separada nula para -f2 . A opção filename + xargs -0 deve lançar o 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.
por 22.07.2018 / 22:48