Alias ​​personalizado do Linux no comando watch?

Alias ​​personalizado do Linux no comando watch?

Não consigo usar meu comando de alias personalizado no utilitário watch para monitorar filas diferentes. Diz comando não 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

Responder1

Não há uma resposta fácil: o melhor que pude fazer foi adicionar umfunção watchanycontendo:

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

Precisa ser uma função para evitar o processamento em um subshell (e os ()colchetes são pelo mesmo motivo). Você pode adicioná-lo ao .bashrc.

Não procurei isso ao máximo, mas como acima, ele não funciona corretamente com arquivos ou parâmetros extras contendo espaços em branco incorporados. Se isso for um problema, você mesmo terá que elaborá-lo.

Quando você estiver convencido de que está funcionando como deseja, poderá substituir watchna função por $(which watch)e então alias watch=watchall.

Se você deseja observar apenas um ou dois aliases, 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 mudar watchlqse alguma vez mudar lq.

informação relacionada