bash_completion


1

मेरे पास एक सरल स्क्रिप्ट है, जो एक सिमलिंक बनाता है IP_address-> config_file(pxe बूट के लिए उपयोग किया जाता है)। मेरी स्क्रिप्ट को इस तरह कहा जाता है:

lnpxe CONFIG HOSTNAME

जहां CONFIGमेरी एक कॉन्फ़िगर फ़ाइल में संग्रहीत है /home/tftp/config/और HOSTNAMEकिसी भी होस्टनाम है। अब, मैं अपनी स्क्रिप्ट के लिए bash_completion सेट करने का प्रयास कर रहा हूं। जब मैं टाइप करता हूं lnpxeऔर फिर प्रेस करता TABहूं, तो मैं अपने कॉन्फिडेंशियल फाइल को /home/tftp/config/"मुझे" सुझाव देना चाहता हूं और स्वतः पूर्ण कर लेता हूं। इसी तरह, दूसरे तर्क के लिए, मैं अपनी /etc/hostsफ़ाइल से उपलब्ध मेजबानों के सुझाव (जैसे पिंग या ssh do) करना चाहूंगा

यहाँ मेरी /etc/bash_completion.d/lnpxeफाइल है जो काम नहीं करती है जैसा कि मैं चाहूंगा:

_lnpxe()
{
    local cur prev
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    _filedir

}
complete -F _lnpxe -o filenames lnpxe

किसी कृपया मदद कर सकता है?

जवाबों:


2
_lnpxe()
{
    HOSTFILE=/etc/hosts
    local word
    COMPREPLY=()
    if [ 1 -eq "$COMP_CWORD" ]; then
      pushd /home/tftp/config &>/dev/null || return 1
      word="${COMP_WORDS[COMP_CWORD]}"
      COMPREPLY=($(compgen -f "$word"))
      popd &>/dev/null
    fi
    if [ 2 -eq "$COMP_CWORD" ]; then
      word="${COMP_WORDS[COMP_CWORD]}"
      COMPREPLY=($(compgen -A hostname "$word"))
    fi

}
complete -F _lnpxe lnpxe

धन्यवाद, लेकिन यह काम नहीं करता है
user1968963

@ user1968963 अजीब; यह यहाँ है (हालांकि एक अलग रास्ते के साथ लेकिन यह बात नहीं होनी चाहिए)। चलाने के लिए कृपया compgen -f /home/tftp/config/और HOSTFILE=/etc/hosts; compgen -A hostname। आउटपुट क्या हैं? आप उन्हें टिप्पणी में डालने के बजाय उन्हें अपने प्रश्न में जोड़ सकते हैं।
हौके लैगिंग

यह काम करता है जब मैं अंत में निम्नलिखित जोड़ देता हूं:complete -F _lnpxe lnpxe
user1968963

एकमात्र समस्या यह है, पहला तर्क स्वतः पूर्णता कॉन्‍फ़िगर फ़ाइल का सुझाव नहीं देता है, लेकिन आपको संपूर्ण फ़ाइल को पूर्ण पथ, अर्थात /home/tftp/config/। क्या आप जानते हैं कि इसे कैसे बदलना है? मेरी पटकथा सापेक्ष पथ (केवल फ़ाइल नाम) की अपेक्षा करती है, और निरपेक्ष पथ नहीं
user1968963

@ user1968963 आप पहले से ही complete -F _lnpxe -o filenames lnpxeअपने प्रश्न से नफरत करते हैं और इस प्रकार मैंने केवल फ़ंक्शन को ठीक किया। मैंने सापेक्ष पथों में परिवर्तन किया और उत्तर को संपादित किया।
हौके लैगिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.