Suponho que você tenha aparado inadvertidamente a parte importante de suas linhas de comando aqui: os URLs em questão contêm um caractere ?
(ou *
). ?
e *
são caracteres especiais correspondentes ao shell. ?
corresponde a um único caractere em um nome de arquivo e *
corresponde a muitos. Quando zsh
diz:
zsh: no matches found: http://myvideosite.com?video=123
está dizendo que não há nenhum arquivo chamado http://myvideosite.com?video=123
acessível no diretório atual.
Em zsh, por padrão, uma expansão com falha como essa é um erro, mas no Bash não é: o padrão com falha é simplesmente deixado como um argumento exatamente como foi escrito. O comportamento do zsh é mais seguro, pois você não pode escrever um comando que secretamente não faz o que você quis dizer porque faltava um arquivo, mas você pode alterá-lo para ter o comportamento do Bash se quiser:
setopt nonomatch
A opção NOMATCH
está ativada por padrão e causa os erros que você estava vendo. Se você desativá-lo com setopt nonomatch
, todas as expansões de glob com falha serão deixadas intactas na linha de comando:
$ echo foo?bar
zsh: no matches found: foo?bar
$ setopt nonomatch
$ echo foo?bar
foo?bar
Isso resolverá seu caso de uso original. Em geral, será melhor citar argumentos com caracteres especiais, a fim de evitar erros onde existe um arquivo com um nome correspondente, ou não existe quando você pensou que existia.