Alias customizado do Linux no comando watch?

1

Não consigo usar meu comando alias personalizado no utilitário watch para monitorar filas diferentes. Ele diz que o comando não foi encontrado. Existe alguma maneira de usar o comando com alias no utilitário watch?

$ alias lq='ls -lhrt /home/foo/stat/*.msg'

$ watch lq
sh: lq: command not found
    
por Ashok 18.09.2015 / 13:05

1 resposta

1

Não há uma resposta fácil: o melhor que pude fazer foi adicionar uma função watchany contendo:

watchany() { alias "$1" 2>/dev/null| \
  ( t='line'; if [ -n "$t" ]; then t=${t#*=\'}; t=${t%\'}; shift; \
    watch $t "$@"; else watch "$@"; fi ) }

Ele precisa ser uma função para evitar o processamento em um sub-shell (e os parênteses () são pelo mesmo motivo). Você pode adicioná-lo a .bashrc .

Eu não o procurei até o final, mas como acima, ele não funciona adequadamente com arquivos ou parâmetros extras que contêm espaços em branco incorporados. Se isso for um problema, você terá que elaborar você mesmo.

Depois de se certificar de que está funcionando como deseja, você pode substituir watch na função por $(which watch) e, em seguida, alias watch=watchall .

Se for apenas um ou dois aliases que você deseja assistir, provavelmente será mais fácil adicionar aliases extras, como:

alias watchlq='watch ls -lhrt /home/foo/stat/*.msg'

É claro que você precisará se lembrar de alterar watchlq se você alterar lq .

    
por 18.09.2015 / 15:02

Tags