scp с zsh: совпадений не найдено

42

когда я пытаюсь scp через Zsh, я получаю

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

та же команда работает в Bash

Хуан Пабло
источник
Можете ли вы пометить один из ответов как правильный? Некоторые выглядят довольно хорошо.
Джефф

Ответы:

74

Избегайте подстановочных знаков:

scp hostA:Descargas/debian-6.0.4-\*
yPhil
источник
1
Я получил ту же ошибку при попытке запустить работника ruby ​​resque с QUEUE=*опцией. Спасибо за исправление!
mogramer
2
Спасибо за решение ... Это похоже на пример того, как zsh слишком умён для своего блага ...
Оуэн,
1
У меня тоже сработало. Странно, хотя!
Ропанк
11

или добавьте это к вашему .zshrc

alias scp='noglob scp'
Пер Хуртиг
источник
4

Снимите этот NOMATCHфлажок, чтобы zsh оставил текст в покое, а не жаловался на неудачу.

Игнасио Васкес-Абрамс
источник
1
Привет, как это сбросить? в .zshrc?
GoingMyWay
4

Этот пост имеет хорошее решение этой проблемы с помощью плагина url-quote-magic для автоматического экранирования глобусов в командах scp. Чтобы включить его, добавьте следующее к вашему ~/.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)'

Когда вы вводите глобальный символ (например *) в качестве части удаленного пути в команде scp или rsync, zsh автоматически добавляет черную косую черту впереди, например так:

scp hostA:Descargas/debian-6.0.4-\* user@192.168.1.154:Escritorio/Software/
mgorven
источник
1
Это неприятный, но приятный трюк.
Аттила О.
1

Слишком поздно для вечеринки, но ..

Вы можете избежать строки с кавычками тоже

scp "hostA:Descargas/debian-6.0.4-*" "user@192.168.1.154:Escritorio/Software/"
waghcwb
источник