Evitar que o zsh tente expandir tudo

4

Mudou recentemente do bash, notei que zsh tentará expandir cada comando ou argumento que pareça ter curingas nele. Portanto, as linhas a seguir não funcionam mais:

git diff master{,^^}
zsh: no matches found: master^^

scp remote:~/*.txt .
zsh: no matches found: remote:~/*.txt

A única maneira de fazer os comandos acima funcionar é citar os argumentos, o que é bastante irritante.

P: Como eu configuro o zsh para tentar expandir os curingas, mas se não houver correspondências, basta passar o argumento como está?

EDITAR: Possivelmente relacionado: scp com zsh: nenhuma correspondência encontrada

    
por Attila O. 05.11.2013 / 02:19

2 respostas

4

É um recurso pretendido do zsh. Ao usar qualquer shell, é considerado uma boa prática citar qualquer caractere que seja considerado um meta-caractere para o shell. ^ é um padrão usado para negar uma string quando a opção extendedglob está definida. * é um padrão usado para corresponder a zero ou mais caracteres.

Você pode pará-lo desativando a opção nomatch . Mas ao fazer isso, seus padrões não citados tornam suas declarações voláteis, dependendo de quais arquivos podem estar presentes no diretório de trabalho atual. Você não deveria fazer isso.

    
por 05.11.2013 / 04:47
0

Para scp , consulte link

Para git , use ~ em vez de ^ .

    
por 26.06.2015 / 14:57