जब मैं बैश या zsh में पूरा होने वाले मानक टैब का उपयोग करता हूं, तो मैं फ़ाइल नाम या पथ का पहला भाग टाइप करता हूं, फिर शब्द को पूरा करने के लिए हिट करता हूं। यह तब तक अच्छी तरह से काम करता है जब तक कि मैं फ़ाइलों से भरी निर्देशिका में नहीं होता जहाँ फ़ाइल नाम में सभी भिन्नताएँ शब्द के अंत में होती हैं, उदाहरण के लिए समय-मोहरहित फ़ाइलों से भरी एक निर्देशिका जो सभी एक ही उपसर्ग के साथ शुरू होती है:
foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log
इस स्थिति में, यदि मुझे टाइप करें तो मुझे foo<tab>
मिल जाएगा foo-20120701124
- मैं फिर से टैब कर सकता हूं, और सभी फाइलें देख सकता हूं ... मुझे एक अद्वितीय फ़ाइल नाम प्राप्त करने के लिए अगले 3 वर्णों में लिखना होगा।
मैं सोच रहा था कि उदाहरण के लिए टाइप करने का कोई तरीका है 4731.log
और फिर शब्द की पूरी शुरुआत। मैं अनुमान लगा रहा हूं कि यह बैश में मुश्किल होगा, क्योंकि बैश पूरा होने का उपयोग करता है $COMP_CWORD
और $COMP_KEY
इसके प्रोग्राम पूरा होने के लिए, और जिस तरह से मैं इसे पढ़ रहा हूं, मुझे नहीं लगता कि वे बाएं शब्द को पूरा करने की अनुमति देंगे। मुझे पता नहीं है कि मैन पेजों में कहां से शुरू किया जाए, यह जानने के लिए zsh के अंदर पूरा करने के बारे में पर्याप्त नहीं है।
for i in {1..10}; do touch $(date -d "$i days $RANDOM seconds ago" +%Y%m%d%H%M%S); done
... इसने फ़ाइलों की एक श्रृंखला बनाई जो इस तरह दिखती थी20120915165427 20120916121328 20120917180952
। यदि मैं उपयोगls *09<tab>
करता हूं , तो यह विस्तार नहीं करता है, लेकिन*09*<tab>
करता है।