বাশে কাজ করা scp কমান্ড 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 অনুসন্ধান করে অনেকগুলি এন্ট্রি পেয়েছি, যার মধ্যে কোনওটি 'হোল্ড' হিসাবে চিহ্নিত নয়, অন্যথায় আমি এটি এখানে পোস্ট না করতাম।
কে-মাইকেল আয়ে

উত্তর:


16

সমস্যা হল zshহয় globbing দূরবর্তী পথ। আপনি এটি দ্বারা যাচাই করতে পারেন

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

Scp কমান্ড দূরবর্তী পাথ জন্য বন্ধ globbing চালু করতে, কিন্তু অন্যথায় একই 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
চিয়ার্স। নিশ্চিত করেছে। আমি কি এটি বন্ধ করতে পারি?
কে.-মাইকেল আয়ে

1
@ কে-মাইকেলএই সম্পাদিত উত্তর, তবে হ্যাঁ।
এলিয়ট ফ্রিচ

এবং যে হ্যাক কাজ করে। দুর্দান্ত, ধন্যবাদ! (এটি আমার .zshrc এ যুক্ত করুন)
কে। মাইকেল আয়ে

3

আপনি যদি একক উদ্ধৃতি ব্যবহার করেন, তবে এটি কাজ করে:

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

সাইগউইন ব্যবহারের ক্ষেত্রে এটি সহজ সমাধান হিসাবে আমি আপনাকে +1 করব। ধন্যবাদ!
কার্লোস

সহজ এবং সহজ ফিক্স। ধন্যবাদ! আরও হুক প্রয়োজন নেই।
কেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.