एससीपी फ़ाइल नाम टैब पूर्णता


13

मैं सर्वरों के बीच फ़ाइलों को स्थानांतरित करने के लिए नियमित रूप से एससीपी का उपयोग करता हूं और मैंने अफवाह सुनी है कि यदि आप सार्वजनिक कुंजी का उपयोग कर रहे हैं, तो आप दूरस्थ सर्वर पर टैब-पूर्णता का उपयोग कर सकते हैं, लेकिन अभी तक मेरे पास कोई भाग्य नहीं है।

जो मैं पूरा करने की कोशिश कर रहा हूं वह निम्नलिखित है:

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/

एक lsके दूरस्थ सर्वर पर /dir/3 फ़ोल्डरों प्रकट होगा:

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3

मैं एससीपी के लिए यह प्रकट करना चाहूंगा कि कौन से फ़ोल्डर्स मैच करते हैं (यदि कोई हो), स्थानीय फाइल सिस्टम को नेविगेट करते समय सामान्य पथ पूरा होने की तरह। टैब समापन scpकमांड लाइन में स्थानीय रास्तों पर काम करता है , लेकिन मैंने देखा है कि जब रिमोट मशीन के लिए पथ स्थानीय (यानी: "~ /") से मेल खाता है, तो यह स्थानीय फाइलसिस्टम से फाइलों / फ़ोल्डरों को पूरा / सुझाता है रिमोट की तुलना में।

पासवर्ड-कम लॉगिन के लिए निम्न कार्य चलाना:

`ssh remote.ip.address`

... तो मुझे पता है कि चाबियाँ सही ढंग से सेटअप हैं। इस काम को पाने के बारे में कोई विचार?


बस इस का इस्तेमाल किया - omgbbq
विलियम

जवाबों:


16

आप किस खोल का उपयोग कर रहे हैं? यदि आप bash का उपयोग कर रहे हैं, तो आपको bash में "उन्नत" पूर्णताओं को सक्षम करने की आवश्यकता हो सकती है ...

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

अपने ~ / .bashrc में

OSX पर आप कर सकते हैं:

$ sudo port install bash-completion

अपने ~ /। लाभकारी ऐड में:

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

मैं एक कार्य केंद्र के रूप में OSX का उपयोग कर रहा हूं, वह फ़ाइल मौजूद नहीं है। हालाँकि, मैं मान रहा हूँ कि किसी भी व्याकुलता के साथ मुझे यह काम करने के लिए बैश-समापन पैकेज स्थापित करने की आवश्यकता है?

मैं अपना उत्तर अद्यतन करूँगा ..
rkthkr

मैं बस उन चरणों के माध्यम से खुद को पूरा कर रहा हूं, सभी अच्छे से काम करते हैं। धन्यवाद दोस्त!

कोई समस्या नहीं, मदद करने के लिए खुश!
rkthkr

1
बेशक, ओएस एक्स के लिए पोर्ट इंस्टॉल भाग केवल काम करता है, अगर आपने मैकपोर्ट्स पैकेज (www.macports.org) स्थापित किया है। और मुझे लगता है कि अगर आप MacPorts के बजाय फ़िंक का उपयोग करना चाहिए तो पैकेज उपलब्ध है।
स्वेन

2

यदि कोई rkthkr की विधि के साथ Mac OSX Mountain Lion के लिए ऐसा करना चाहता है, तो उन्हें पहले Mac Ports ( http://www.macports.org/install.php ) को इंस्टॉल करना होगा , उसके द्वारा बताई गई कमांड को चलाएं:

$ sudo port install bash-completion

फिर यहां मिले इन निर्देशों के अनुसार अपने टर्मिनल ऐप को कॉन्फ़िगर करें: https://trac.macports.org/wiki/howto/bash-completion


जब आपके पास टिप्पणियों को छोड़ने के लिए पर्याप्त प्रतिष्ठा है, तो मौजूदा उत्तरों के अतिरिक्त आमतौर पर उन लोगों के साथ बेहतर काम करते हैं। (यदि आप उत्तर संपादित नहीं करने जा रहे हैं)
एंड्रयू बी

धन्यवाद। यही मैं करना चाहता था, लेकिन जैसा कि आपने बताया, मेरे पास ऐसा करने के लिए पर्याप्त प्रतिनिधि नहीं था।
शॉन कॉन

0

एक और, शायद सरल समाधान sshfs का उपयोग कर रहा है

यह SSH फ़ाइल स्थानांतरण प्रोटोकॉल पर आधारित एक फ़ाइल सिस्टम क्लाइंट है। चूंकि अधिकांश SSH सर्वर पहले से ही इस प्रोटोकॉल का समर्थन करते हैं, इसलिए इसे सेट करना बहुत आसान है: यानी सर्वर की तरफ ऐसा करने के लिए कुछ भी नहीं है। क्लाइंट सिस्टम बढ़ते हुए फाइल सिस्टम उतना ही आसान है जितना कि सर्वर में ssh के साथ लॉग इन करना।

यह एक फ्यूज आधारित फाइल सिस्टम है जो आपके रिमोट फोल्डर को लोकल से जोड़ता है। हुड के तहत, एससीपी का उपयोग किया जाता है, लेकिन आप cpअपने स्थानीय मशीन पर फ़ाइलों की प्रतिलिपि बनाने की तरह ही कमांड का संचालन कर सकते हैं । इस प्रकार, टैब-पूर्णता स्वचालित रूप से काम करती है! sshfs अधिकांश वितरणों के लिए उपलब्ध है, उदाहरण के लिए sudo apt-get install sshfs(यह fuseकर्नेल मॉड्यूल को भी लोड करता है )

इस तरह शुरुआत करें:

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs remote-username@server1.example.com:/home/remote-username /mnt/server1
$ ls /mnt/server1
 .. <bunch of files> ...
$ cp /mnt/server1/.bash<tab><tab>
.bash_history  .bash_logout   .bashrc
$ cp /mnt/server1/.bashrc .

0

मैं दृढ़ता से yafc का उपयोग करने की सलाह देता हूं

यह फ़ाइल नाम पूरा करने का समर्थन करता है और इसकी कुछ अन्य उपयोगी विशेषताएं भी हैं (उदाहरण के लिए पुनरावर्ती प्राप्त / डाल / fxp / ls / rass)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.