मैं एक बैश पूरा स्क्रिप्ट पाने के लिए और कुछ परेशानी होने की कोशिश कर रहा हूँ।
मैं इसे स्थापित करना चाहूंगा ताकि सूचीबद्ध पूर्णियां या तो किसी विशेष एक्सटेंशन, या निर्देशिकाओं से मेल खाने वाली फाइलें हों (जिनमें उस एक्सटेंशन की फाइलें शामिल हो सकती हैं या नहीं भी)।
मुझे जो परेशानी हो रही है, वह यह है कि मैं फ़ाइलों और निर्देशिकाओं को पूरा करने का एकमात्र तरीका प्राप्त कर सकता हूं -o plusdirs -f -X '!*.txt'
, जैसे कि कुछ का उपयोग करके , लेकिन जब मैं किसी एक निर्देशिका को पूरा करने देता हूं, तो यह अंत में एक जगह जोड़ता है, बजाय स्लेश।
_xyz()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
#COMPREPLY=( $( compgen -f -X '!*.txt' -- $cur ) )
#COMPREPLY=( $( compgen -f -G '*.txt' -- $cur ) )
#COMPREPLY=( $( compgen -o filenames -f -X '!*.txt' -- $cur ) )
#COMPREPLY=( $( compgen -o dirnames -f -X '!*.txt' -- $cur ) )
COMPREPLY=( $( compgen -o plusdirs -f -X '!*.txt' -- $cur ) )
return 0
}
complete -F _xyz xyz
मैंने सभी टिप्पणी की गई लाइनों को भी आज़माया है, लेकिन वे निर्देशिकाओं का विस्तार भी नहीं करते हैं।
परीक्षण के लिए, मैं इसे एक .txt फ़ाइल और एक निर्देशिका "dir" (इसके अंदर एक .txt फ़ाइल के साथ, हालांकि यह अभी तक कोई फर्क नहीं पड़ता) के साथ एक निर्देशिका में चला रहा है। टंकण xyz <TAB>
इस समारोह सूचियों निर्देशिका और .txt फ़ाइल है, लेकिन लेखन के साथ xyz d<TAB>
फैलता करने के लिए xyz dir
(अच्छी तरह से, एक अंतरिक्ष के साथ "dir" के बाद)।