scp 와일드카드가 zsh에서 작동하지 않습니다

scp 와일드카드가 zsh에서 작동하지 않습니다

zsh로 전환했는데 잘 작동합니다. 한 가지 이상한 점은 * 와일드카드를 사용하여 scp를 시도할 때 작동하지 않고 bash로 들어가야 한다는 것입니다. 아래 두 번째 명령은 정상적으로 작동합니다.

이런 일이 발생하는 이유와 해결 방법에 대한 아이디어가 있습니까?

~/dmp ⌚ 16:06:10
$ scp abc@123:/home/se/exports/201405091107/* .
zsh: no matches found: root@uf3:/home/se/exports/201405091107/*

~/dmp ⌚ 16:06:53
$ bash 
sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .

답변1

abc@123:/home/se/exports/201405091107/*쉘(bash 및 zsh)은 로컬 시스템의 파일과 일치하는 glob으로 해석하려고 합니다 . 쉘은 그것이 무엇인지도 모르고 scp, 원격 파일과 일치시키려고 하는지도 모릅니다.

bash와 zsh의 차이점은 와일드카드 실패 시 기본 동작입니다. Bash에서 glob이 아무것도 일치하지 않으면 원래 glob 패턴을 인수로 전달합니다. zsh에서는 오류가 발생합니다.

이 문제를 해결하려면 쉘이 이를 로컬 glob으로 해석하지 않도록 인용해야 합니다.

scp 'abc@123:/home/se/exports/201405091107/*' .

(기타 유사한 작업 ...1107/'*'이나 ...1107/\*작업도 허용됩니다)

zsh 불일치가 bash와 동일하게 동작하도록 변경하려면 다음을 수행할 수 있습니다.

setopt nonomatch

답변2

이 답변을 확인하세요.https://superuser.com/a/740728/978073

zprezto 사용자의 경우 명령 앞에 백슬래시를 붙이면 작동합니다!

바꾸다,

$ scp <command>

그리고

$ \scp <command>

답변3

저는 MacOS Catalina를 사용하고 있으며 setopt nonomatch가 효과가 없습니다.

다음 문제를 해결했습니다.https://superuser.com/a/740728/978073

영구적으로 만들려면 ~/.zshrc를 편집하세요.

#alias scp='noglob scp'
alias scp='\scp'

관련 정보