MySQL कमांड-लाइन क्लाइंट में स्वतः पूर्णता


81

लिनक्स, और कई अन्य प्रणालियों में, टर्मिनल को नेविगेट करते समय आप Tabएक निर्देशिका या फ़ाइल नाम को पूरा करने के लिए ऑटो दबा सकते हैं ।

मुझे आश्चर्य हो रहा है कि MySQL टर्मिनल में ऐसा कुछ है। उदाहरण के लिए, की अगर मैं विवरण प्राप्त करना चाहते हैं someTableWithRidiculousLongNameमैं टाइप कर सकते हैं describe someTableWतो Tabऔर यह बाकी ऑटो पूरा होगा।

क्या ऐसा कुछ MySQL टर्मिनल में मौजूद है?


जवाबों:


123

किसी फ़ाइल .my.cnfको अपने होम डायरेक्टरी में एडिट या क्रिएट करें , जिसमें:

[mysql]
auto-rehash

जरूरी नहीं @galarant, यह बेहतर होगा
rkmax

2
@rkmax - यह अभी भी --disable-auto-rehashध्वज के साथ वैकल्पिक है । लेकिन अब आपने इसे डिफ़ॉल्ट रूप से चालू कर दिया है।
टी जेंगरिंक

3
लेकिन, जब मैं छोटे अक्षर में कमांड टाइप करता हूं तो यह काम नहीं करता है।
अल्हलाल

85

MySQL प्रॉम्प्ट प्रकार के भीतर स्वत: पूर्ण सक्षम करने के लिए:

mysql> \#

उसके बाद आप टाइप कर सकते हैं:

mysql> describe someTableW[TAB]

लेना:

mysql> describe someTableWithRidiculousLongName

7
वह डिफ़ॉल्ट क्यों नहीं है?
ऊसमा एल्गुमरी

1
सरल और सुरुचिपूर्ण
sp1rs

1
mysql> rehash - "# #" के विकल्प के रूप में, हम "rehash" mysql कमांड को निम्न प्रकार से भी टाइप कर सकते हैं। "पुनर्वस" के रूप में साझा करने के बारे में सोचा जाना मेरे जैसे कुछ लोगों के लिए याद रखना आसान हो सकता है: mysql> rehash उसके बाद स्वतः पूर्ण काम करना शुरू कर देगा!
जनेश

1
@OussamaElgoumri क्योंकि हममें से कुछ लोग कमांड लाइन में जटिल प्रश्नों को चिपकाना पसंद करते हैं, और इन प्रश्नों में इंडेंटेशन के लिए टैब वर्ण हो सकते हैं।
एलेक्स

61

अतिरिक्त विकल्प के साथ MySQL कंसोल शुरू --auto-rehash, यानी

mysql --auto-rehash -u root -p

7
मुझे पता नहीं क्यों मेरे लिए काम नहीं करता है! टैब को केवल टैब के रूप में व्याख्या किया जा रहा है और यह ऑटो के पूरा होने के लिए कुछ भी नहीं करता है।
प्रवीण पुगलिया


1
सावधानी, तबीयत तब पूरी होती है जब एक डेटाबेस से जुड़ा होता है क्योंकि ओथियस ने यूनिक्स.स्टैकएक्सचेंज
शिमोन

22

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे उन्नत ऑटोकंप्लीशन के साथ बहुत मददगार MySql cli क्लाइंट मिला है: mycli । यह बिल्ट ऑटो-रेहाश फीचर से बहुत ज्यादा स्मार्ट है।


7
बहुत बढ़िया विकल्प!
क्रैक्सर

3
अरे हाँ, शीर्ष पायदान जवाब
smac89

1
auto-rehashमेरा काम नहीं करता है। Mycli और बूम पर स्विच किया गया .... एक समर्थक की तरह काम किया।
राजेश चौधरी

4

ओएस एक्स 10.11.6 पर मैंने ऊपर वर्णित के अनुसार -ऑटो-रेहाश को सेट किया, लेकिन यह काम नहीं किया। (यह OS X है इसलिए mysql को BSD libedit लाइब्रेरी के साथ संकलित किया गया है ।)

तब मुझे याद आया कि मैंने ~ / .editrc बनाकर, mysql क्लाइंट के लिए vi की-बाइंडिंग सेट की है, जिसमें एक लाइन है: bind -v । यह मुझे mysql क्लाइंट में vi-like नेविगेशन देने के लिए बहुत अच्छा काम करता है, लेकिन इसने कॉलम नाम पूरा होने को तोड़ दिया (मैं इसे हटाकर इसे सत्यापित करने में सक्षम था .editrc )।

इसलिए मैंने थोड़ा शोध किया और पाया कि ~ / .editrc में कम से कम निम्नलिखित पंक्तियाँ होनी चाहिए:

bind -v
bind \\t rl_complete

इस अतिरिक्त लाइन के साथ, mysql AND vi-like नेविगेशन कार्यों में नाम पूर्णता सही ढंग से काम करती है। (अन्य .editrc सेटिंग्स हैं जो mysql क्लाइंट नेविगेशन को बहुत सुधारती हैं, लेकिन यह चर्चा के उस धागे को शुरू करने का स्थान नहीं है।)


3

ऑटो-रीश के बारे में कुछ नोट्स:

जब आप mysql config फाइल को संपादित करते हुए स्वतः पूर्णता सक्षम करते हैं ..

[mysql]
auto-rehash

आप इसे सभी उपयोगकर्ताओं के लिए या केवल एक उपयोगकर्ता के लिए कर सकते हैं:

/etc/my.cnf: सभी उपयोगकर्ताओं

~/.my.cnf: वास्तविक उपयोगकर्ता

आप स्वत: पूर्णता जोड़ने को भी अक्षम कर सकते हैं:

no-auto-rehash

से निकाला गया: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html


1

आप कमांड हिस्ट्री के आधार पर ऑटो-कम्प्लीट भी कर सकते हैं। टाइप करना शुरू करें, फिर उन कुंजियों का आह्वान करें, जो कि बाध्य हैं ed-search-prev-historyऔर ed-search-next-history। यह लागू होता है अगर mysql libedit समर्थन के साथ आता है। डिफ़ॉल्ट कीबाइंडिंग Ctrl-P और Ctrl-N हैं, लेकिन इसे .editrc में अनुकूलित किया जा सकता है। Ctrl-up और Ctrl-down के लिए मेरा उदाहरण:

# start typing, then press Ctrl-Up
bind "\e[1;5A" ed-search-prev-history
# start typing, then press Ctrl-Up, then Ctrl-Down
bind "\e[1;5B" ed-search-next-history

पहले, mysql रीडलाइन पर आधारित था, और फिर history-search-backwardऔर history-search-forwardसही कमांड हैं। कॉन्फ़िगरेशन तब .inputrc के माध्यम से था। ऊपर जैसा ही उदाहरण:

# these are the key bindings for the readline library
# start typing, then press Ctrl-Up
"\e[1;5A": history-search-backward
# start typing, then press Ctrl-Up, then Ctrl-Down
"\e[1;5B": history-search-forward

इसलिए, selमान लीजिए कि आपने टाइप करना शुरू कर दिया है और Ctrl-Up शुरू कर दिया है , select * from some_long_table_nameअगर यह एक कमांड है जिसे मैंने पहले इस्तेमाल किया है।

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