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.