tcsh vs zsh. Escape / caracteres de controle

2

Estou tendo problemas para executar este comando para trabalhar no zsh:

my_command -u something -s X:^0  

O comando funciona imediatamente no tcsh, mas no zsh eu recebo:

zsh: no matches found -s X:^0

Isso me fez pensar se ^ é o culpado. Tanto quanto eu entendo sX:^0 é o valor do argumento -s , mas zsh parece expandi-lo e não passá-lo para my_command da mesma forma que tcsh faria.

O meu entendimento está correto? Se sim, como posso executar o mesmo comando em zsh?

    
por Amelio Vazquez-Reina 18.01.2013 / 20:03

1 resposta

4

Com extendedglob ativado, em zsh, ^ é o operador de globalização de negação, então -sX:^0 significa qualquer nome de arquivo começando com -sX: não seguido por 0 .

Você precisa citá-lo (como em '-sX:^0' ou -sX:\^0 ou -s"X:^0" ...) se não quiser que ele seja interpretado como um operador de globbing.

Observe que no shell Bourne e em seus predecessores, ^ também era um operador pipe , portanto, também precisava ser citado.

    
por 18.01.2013 / 20:43