bash compgen -d - '~' हमेशा खाली आउटपुट देता है


3
bash$ compgen -d -- '~'

खाली उत्पादन करता है।

bash$ compgen -d -- '~mi'

खाली उत्पादन भी करता है।

bash$ compgen -d -- '~mice/'
~mice/.pulse
~mice/.mozilla
~mice/Pictures

ठीक है।

bash$ compgen -d -- '~mice/Do'
~mice/Downloads
~mice/Documents

यह भी ठीक है।

क्या यह कंपेन में बग है कि यह '~' और '~ mi' के लिए खाली आउटपुट तैयार करता है? यदि यह एक बग है, तो क्या यह तय होने पर कुछ टूट जाएगा?

जवाबों:


4

पहले दो, मुझे संदेह है, निर्देशिका नामों के रूप में पूरा करने से पहले उन्हें टिल्ड विस्तार के रूप में पूरा करने की आवश्यकता है।

bash$ compgen -u -- '~mi'
~mice

हालाँकि, आप दोनों को निर्दिष्ट नहीं कर सकते -d तथा -u उसी कॉल में compgen

निम्नलिखित पर ध्यान दें:

bash$ compgen -d -- '~/'     # Like #1, but with trailing /: it works
bash$ compgen -d -- '~mice'  # Like #3, but w/o trailing /: it doesn't work

इसलिए अपूर्ण टिल्ड विस्तार को उचित निर्देशिका द्वारा विस्तारित नहीं किया जाएगा -d, और "पूर्ण" का अर्थ है समाप्ति पथ विभाजक चरित्र सहित।


यह पराक्रम दाखिल करने लायक हो बग रिपोर्ट , हालांकि मुझे संदेह है कि यह इरादा के अनुसार काम करता है। बहुत कम से कम, आपको वर्तमान व्यवहार के लिए बेहतर स्पष्टीकरण मिल सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.