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-*

คำสั่งเดียวกันทำงานในทุบตี


คุณสามารถทำเครื่องหมายคำตอบข้อใดข้อหนึ่งให้ถูกต้องได้หรือไม่? บางคนดูดีทีเดียว
Geoff

คำตอบ:


73

หนีไวด์การ์ดของคุณ:

scp hostA:Descargas/debian-6.0.4-\*

1
ฉันได้รับข้อผิดพลาดเดียวกันเมื่อพยายามเรียกใช้QUEUE=*ตัวเลือกresque ruby ขอบคุณสำหรับการแก้ไข!
mogramer

2
ขอบคุณสำหรับการแก้ปัญหา ... นี่เป็นตัวอย่างของ zsh ที่ฉลาดเกินไปสำหรับความดีของตัวเอง ...
โอเวน

1
ทำงานให้ฉันเช่นกัน แปลก แต่!
roopunk


4

ยกเลิกการตั้งค่าNOMATCHตัวเลือกเพื่อให้ zsh ออกจากข้อความเพียงอย่างเดียวแทนที่จะบ่นเกี่ยวกับความล้มเหลวแบบกลม


1
สวัสดีวิธียกเลิกการตั้งค่านั้น ใน.zshrc?
GoingMyWay

4

โพสต์นี้มีทางออกที่ดีสำหรับสิ่งนี้โดยใช้ url-quote-magic plugin เพื่อหลบหลีก globs โดยอัตโนมัติในคำสั่ง 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)'

เมื่อคุณพิมพ์อักขระ glob (เช่น*) เป็นส่วนหนึ่งของเส้นทางระยะไกลในคำสั่ง scp หรือ rsync, zsh จะเพิ่ม blackslash ไว้ข้างหน้าโดยอัตโนมัติดังนี้:

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

1
นี่เป็นเคล็ดลับที่น่ารังเกียจ แต่ก็ดี
อัตติลาโอ

1

สายเกินไปสำหรับปาร์ตี้ แต่ ..

คุณสามารถยกเว้นสตริงด้วยเครื่องหมายคำพูดได้เช่นกัน

scp "hostA:Descargas/debian-6.0.4-*" "user@192.168.1.154:Escritorio/Software/"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.