watch expansão do alias do comando

45

Se você executar o comando watch contendo um alias, ele não expandirá o alias. Eu tentei tanto com aspas simples e aspas duplas, na verdade, dado o seguinte alias:

# alias ll
alias ll='ls -l --color=tty'

O seguinte comando irá falhar

# watch ll
sh: ll: command not found

O trabalho de expansão de linha de comando não deve ser feito neste caso?

    
por ztank1013 25.11.2011 / 13:27

2 respostas

72

Os aliases são expandidos apenas como o primeiro argumento ou após outro alias com um espaço à direita no final do comando.

De bash ' help alias :

A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded.

Para fazer isso, tente o seguinte:

alias watch='watch '
alias ll='ls -l --color=tty'
watch ll

Lembre-se de que algumas versões de watch excluem as cores por padrão. Em algumas versões, isso pode ser interrompido usando --color ou -G .

    
por 25.11.2011 / 13:41
0

Eu pensei que aqui o problema básico é executar watch , o argumento é dado a " sh -c ", o que significa que se alias ll não estiver definido em sh(dash shell's) environment, ele não será expandido. Mas eu estava errado e este não é o caso, a resposta de Chris acima está certa.

    
por 25.11.2011 / 13:50

Tags