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

juanpablo
źródło
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-\*
yPhil
źródło
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
11

lub dodaj to do swojego .zshrc

alias scp='noglob scp'
Per Hurtig
źródło
4

Wyłącz tę NOMATCHopcję, aby zsh pozostawił tekst w spokoju, zamiast narzekać na globalną awarię.

Ignacio Vazquez-Abrams
źródło
1
Cześć, jak to rozbroić? w .zshrc?
GoingMyWay
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/
mgorven
źródło
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-*" "[email protected]:Escritorio/Software/"
waghcwb
źródło