क्या यह अधूरा निर्देशिका नाम दिए जाने पर सीडी के लिए स्वचालित रूप से चुना गया मानक व्यवहार है?


17

मेरे पास तीन फ़ोल्डर हैं ProjectA, ProjectBऔर ProjectC। जब मैं tab-Complete cdकरने cd Projectऔर प्रेस Enter, यह चुनता है ProjectC। मैंने पाया है कि यह अन्य समान मामलों के मामले में भी है; यह लेक्सिकोग्राफिक क्रम में अंतिम तक चूकता है (लेकिन यह सबसे हाल ही में परिवर्तित / जोड़ा जा सकता है)।

क्या यह अपेक्षित डिफ़ॉल्ट व्यवहार है cd, या मैंने यहां दुर्घटना से कुछ निर्धारित किया है?

मैं OSX 10.10.3 चला रहा हूं, जो कि 4.3 के साथ है।

जवाबों:


18

मैं उस व्यवहार का सामना नहीं करता। लेकिन मैं इसे पुन: पेश करने में सक्षम था। शायद आपने गलती से विकल्प बदल दिया cdspellबैश संदर्भ मैनुअल देखें :

cdspell

यदि सेट किया जाता है, तो cd कमांड में डायरेक्टरी कंपोनेंट की स्पेलिंग में छोटी-मोटी त्रुटियां ठीक की जाएंगी। जिन त्रुटियों की जाँच की गई है, वे ट्रांसपोज़्ड कैरेक्टर, एक मिसिंग कैरेक्टर और एक कैरेक्टर बहुत अधिक हैं। यदि कोई सुधार पाया जाता है, तो सही किया गया पथ मुद्रित होता है, और कमांड आगे बढ़ती है। यह विकल्प केवल इंटरैक्टिव गोले द्वारा उपयोग किया जाता है।

मैंने इसकी कोशिश की और यह हमेशा दिए गए तर्क में मार्ग को सही करता है cd। यदि आपके फ़ोल्डर में जैसे कई संभावनाएं हैं ProjectA, ProjectBऔर ProjectC, यह उस के लिए डिफॉल्ट करता है जो निर्देशिका क्रम में अंतिम है। आप इसे देख सकते हैं ls -U। उदाहरण देखें:

user@host:~$ ls -Ul
total 0
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectA
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectB
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectC
user@host:~$ cd Project<tab><tab>
ProjectA/ ProjectB/ ProjectC/
user@host:~$ cd Project
ProjectC
user@host:~/ProjectC$

उस व्यवहार उपयोग को अक्षम करने के लिए:

shopt -u cdspell

दिलचस्प है, लेकिन यह वह क्यों चुनता है जो निर्देशिका क्रम में अंतिम है? यह प्रलेखित नहीं है।
फहीम मीठा

मुझे उसके लिए कोई स्रोत नहीं मिल रहा है। बैश के स्रोत कोड में एक फ़ंक्शन होता है जिसे कहा जाता है spnameकि सही ढंग से वर्तनी फ़ाइल नाम वापस करता है। यह प्रेरित हैthe code in "The UNIX * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, pages 209 - 213.
अराजकता

एक दस्तावेज बग की तरह लगता है। आप शायद इसे कोसने के लिए रिपोर्ट करें। यदि आप करते हैं, तो आप अपने उत्तर में बग का लिंक शामिल कर सकते हैं।
फहीम मीठा

@ अचोस आह हां, मैं देख रहा हूं कि मैंने अपने में shopt -s cdspellसेट कर लिया है .bashrc(मैंने एक ऑक्स / लाइनक्स क्रॉस को संगत बनाने के लिए बहुत कॉपी-एंड- पेस्टिंग .bashrcकिया और स्पष्ट रूप से अधिक ध्यान देना चाहिए)। मैं वास्तव में इसे पसंद करता हूं, मैं सिर्फ खोज खोज को चालू नहीं कर सका। धन्यवाद!
रॉब होल्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.