คำสั่ง scp ทำงานใน bash ไม่ทำงานใน zsh


14

คำสั่งนี้ทำงานได้ดีในทุบตี:

bash-3.2$ scp luna4:/u/paige/maye/src/diviner/notebooks/plots/hk_* .
hk_az.png                                                   100%  126KB 126.0KB/s   00:00
hk_baffle.png                                               100%  166KB 166.3KB/s   00:01
hk_bb.png                                                   100%  144KB 143.8KB/s   00:00
hk_el.png                                                   100%  115KB 115.3KB/s   00:00
hk_fpa.png                                                  100%  123KB 123.2KB/s   00:00
hk_fpb.png                                                  100%  126KB 125.7KB/s   00:00
hk_hybrid.png                                               100%   99KB  98.7KB/s   00:00
hk_oba.png                                                  100%  140KB 139.7KB/s   00:00
hk_solar.png                                                100%  206KB 205.6KB/s   00:00
hk_temp.png                                                 100%   62KB  61.8KB/s   00:00
hk_yoke.png                                                 100%  122KB 121.7KB/s   00:00
bash-3.2$ exit

แต่ใน zsh มันล้มเหลวไม่พบไฟล์:

$ scp luna4:/u/paige/maye/src/diviner/notebooks/plots/hk_* .
zsh: no matches found: luna4:/u/paige/maye/src/diviner/notebooks/plots/hk_*

เกิดอะไรขึ้น?


ฉันสงสัยว่าตัวเองโพสต์ที่นี่ได้ไหม แต่ฉันค้นหา zsh และ scp และพบรายการจำนวนมากไม่มีรายการใดที่ทำเครื่องหมายว่า 'ระงับไว้' มิฉะนั้นฉันจะไม่โพสต์ที่นี่
K. -Michael Aye

คำตอบ:


16

ปัญหาคือว่าzshจะglobbingเส้นทางระยะไกล คุณสามารถตรวจสอบได้โดย

scp luna4:"/u/paige/maye/src/diviner/notebooks/plots/hk_*" .

หากต้องการปิด globbing สำหรับเส้นทางรีโมต scp แต่ไม่เช่นนั้นให้ทิ้ง globbing เดียวกัน (จากที่นี่ ) เพิ่มสิ่งนี้ในของคุณ.zshrc-

# Disable globbing on the remote path.
alias scp='noglob scp_wrap'
function scp_wrap {
  local -a args
  local i
  for i in "$@"; do case $i in
    (*:*) args+=($i) ;;
    (*) args+=(${~i}) ;;
  esac; done
  command scp "${(@)args}"
}

1
ไชโย ได้รับการยืนยัน ฉันจะปิดได้ไหม
K. -Michael Aye

1
@ K. -MichaelAye แก้ไขคำตอบแล้ว แต่ใช่
Elliott Frisch

และแฮ็คนั้นก็ใช้งานได้เช่นกัน เยี่ยมมากขอบคุณ! (เพิ่มลงใน. zshrc ของฉัน)
K. -Michael Aye

3

หากคุณใช้เครื่องหมายคำพูดเดี่ยวมันจะทำงานได้:

scp 'remote.host.com:files*' .

ฉันจะ +1 คุณเนื่องจากนี่เป็นการแก้ไขง่ายๆในการใช้ Cygwin ขอบคุณ!
คาร์ลอส

แก้ไขง่ายและง่าย ขอบคุณ! ไม่จำเป็นต้องขอเพิ่มเติม
เคท
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.