scp with zsh: nie znaleziono dopasowań


42

kiedy próbuję scp przez Zsh, rozumiem

scp hostA:Descargas/debian-6.0.4-* user@192.168.1.154:Escritorio/Software/
zsh: no matches found: hostA:Descargas/debian-6.0.4-*

to samo polecenie działa w bash


Czy możesz oznaczyć jedną z odpowiedzi jako poprawną? Niektóre wyglądają całkiem nieźle.
Geoff

Odpowiedzi:


73

Ucieknij od wieloznacznika:

scp hostA:Descargas/debian-6.0.4-\*

1
Wystąpił ten sam błąd, gdy próbowałem uruchomić pracownika resque ruby ​​z QUEUE=*opcją. Dzięki za poprawkę!
mogramer

2
Dzięki za rozwiązanie ... Wygląda to na przykład, że zsh jest zbyt mądry, aby samemu działać ...
Owen,

1
Pracował również dla mnie. Dziwne jednak!
roopunk



4

Ten post ma dobre rozwiązanie tego problemu, używając wtyczki url-quote-magic do automatycznego unikania globów w poleceniach scp. Aby go włączyć, dodaj następujące elementy do ~/.zshrc:

# Automatically quote globs in URL and remote references
__remote_commands=(scp rsync)
autoload -U url-quote-magic
zle -N self-insert url-quote-magic
zstyle -e :urlglobber url-other-schema '[[ $__remote_commands[(i)$words[1]] -le ${#__remote_commands} ]] && reply=("*") || reply=(http https ftp)'

Kiedy wpiszesz znak glob (jak *) jako część zdalnej ścieżki w komendzie scp lub rsync, zsh automatycznie doda z przodu czarny ukośnik, jak poniżej:

scp hostA:Descargas/debian-6.0.4-\* user@192.168.1.154:Escritorio/Software/

1
To paskudna, ale miła sztuczka.
Attila O.

1

Za późno na przyjęcie, ale ...

Możesz także uciec od ciągu z cudzysłowami

scp "hostA:Descargas/debian-6.0.4-*" "user@192.168.1.154:Escritorio/Software/"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.