जादू क्या है जो मुझे एक दूरस्थ कमांड टाइप करने के लिए दूरस्थ फ़ाइलों को टैब-पूर्ण करने की अनुमति देता है?


16

संभवत: यह कुछ प्लगइन द्वारा प्रदान की गई एक विशेषता है जिसे मैंने अपने ओह-माय-ज़श सेटअप में सक्षम किया है (मैं अब कई वर्षों से zsh का उपयोग कर रहा हूं)।

जब से मैंने सर्वर के लिए अपनी सार्वजनिक कुंजी जोड़ी (अब मैं पासवर्ड दर्ज किए बिना सर्वर पर SSH कर सकता हूं) को देखा, जब मैंने scpअपने शेल में एक कमांड की रचना की, तो मैं वास्तव में दूरस्थ फ़ाइल पथों को टैब-पूर्ण करने में सक्षम हूं!

जैसे

$ diff <(scp Remoteuser@remote.domain.net:/var/www/html/

मैं टैब मारा और यह सिर्फ काम करता है! (के रूप में मैं क्या करने के लिए आदेश के साथ ही पूरा करने की कोशिश कर रहा हूँ, मैं scpstdout करने के लिए "प्रतिलिपि" का उपयोग करने के लिए जा रहा हूँ , और फ़ीड करने के लिए कि एक फ़ाइल के रूप में अलग करने के लिए। इस तरह से मैं सटीक परिवर्तन देख सकते हैं जो मैं सर्वर से पहले तैनात हैं। चल रहा है rsync)

मैं उत्सुक हूं कि वे कौन से टुकड़े हैं जो इस काम को इतनी अच्छी तरह से करते हैं। क्या यह sc में निर्मित कुछ है जो z खोल के साथ एकीकृत था? या कुछ और?

जवाबों:


16

ऊह, मुझे एक स्पष्टीकरण मिला ।

संबंधित भाग को उद्धृत करने के लिए:

Zsh शेल रिमोट टैबकंप्लीशन जैसे शानदार फीचर (एक से अधिक) के साथ आता है। यदि आप उदाहरण के लिए एक फ़ाइल को scp पर कॉपी करना चाहते हैं, तो दूरस्थ होस्ट पर फ़ाइल नाम के किसी भी भाग पर टैब दबाएं। zsh पृष्ठभूमि पर एक ssh सत्र स्थापित करने में सक्षम है, और आपके लिए संबंधित जानकारी प्राप्त करता है, इसलिए आप दूरस्थ फ़ाइलों को गर्तित कर सकते हैं।

पोस्ट कुछ zstyleघोषणाओं को पूरा करने के लिए आगे बढ़ती है, लेकिन मैं ओएचएस समुदाय द्वारा आपके लिए बनाए गए इस सामान को प्राप्त करने के लिए पूर्वोक्त ओह-माय-ज़श जैसे एक ज़ीएस पैकेज का उपयोग करने का दृढ़ता से सुझाव दूंगा ।

कुछ प्रासंगिक प्रतीत होता है, जैसा कि मेरे सिस्टम में मेरे .oh-my-zsh dir में देखा गया है:

$ ack scp 
plugins/common-aliases/common-aliases.plugin.zsh
85:zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%
[# ]*}//,/ })'

<...>

गजब का!! इस सुविधा को अनन्य है zsh। क्या यह संभव है bash
शिवाम्स

1
@shivams इस अपने बैश जरूरतों के लिए प्रासंगिक हो सकता है। ऐसा लगता है जैसे ओह-माय-ज़श स्थापित करना बहुत आसान है, साथ ही ज़श वास्तव में बहुत अच्छा है। मुझे लगता है कि अगर आप वास्तव में इसके बारे में परवाह करते हैं, हालांकि, बहुत ज्यादा नहीं है कि zsh ऐसा कर सकता है जो बैश नहीं कर सकता (और रिवर्स निश्चित रूप से सच भी है)। बस इस बात की जरूरत है कि आप इसमें कितना काम करना चाहते हैं।
स्टीवन लू

7
मेरे लिए @shivams इट्स ऑलवेज बस बैश में काम किया - मैं बस "टैब" को एक स्कैप कमांड में एक दिन सहज रूप से हिट कर रहा था और यह देखकर बहुत आश्चर्यचकित था कि यह स्वतःपूर्ण है! चारों ओर से गुगली करते हुए, ऐसा लगता है कि यदि आपके पास पहले से ही नहीं है तो आपको बैश-समापन पैकेज को स्थापित करने की आवश्यकता है। यह unix.se प्रश्न प्रासंगिक है।
पोंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.