सभी पिछले आदेशों के बजाय समान प्रारंभिक वर्णों वाले आदेशों के माध्यम से ब्राउज़ करने के लिए ऊपर-तीर कॉन्फ़िगर करें


15

पर bashकमांड लाइन, मुझे पिछला आदेश देता है। कमांड-लाइन्स में numpyया matlabजब मैं कुछ अक्षर टाइप करता हूं, तो मुझे उन अक्षरों से शुरू होने वाली कमांड दर्ज करता है । मैं वास्तव में इस व्यवहार को कैसे सक्षम कर सकता हूं bash?

मैं कमांड-लाइन इतिहास के माध्यम से खोज करने के अधिक उन्नत तरीकों से अवगत हूं, लेकिन कभी-कभी एक सरल तरीका अधिक सुविधाजनक होता है।

जवाबों:


18

आप जिस कमांड लाइन को देख रहे हैं, वह history-search-*कमांड हैं:

इतिहास-खोज-आगे
वर्तमान लाइन की शुरुआत और वर्तमान कर्सर स्थिति (बिंदु) के बीच पात्रों की स्ट्रिंग के लिए इतिहास के माध्यम से आगे खोजें। यह एक गैर-वृद्धिशील खोज है।
इतिहास-खोज-बैकवर्ड
वर्तमान लाइन और बिंदु की शुरुआत के बीच पात्रों के स्ट्रिंग के लिए इतिहास के माध्यम से पीछे की ओर खोजें। यह एक गैर-वृद्धिशील खोज है।

अपने में बांधना .inputrc, जैसे:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

तो आप एक आदेश के पहले वर्ण दर्ज करने की अनुमति देगा, और प्रयोग Upऔर Downमें केवल उन्हीं आदेशों के माध्यम से ले जाने के लिए कुंजी अपने.bash_history है कि तार के साथ शुरू करते हैं।

उदाहरण के लिए, प्रवेश करना viऔर Upआपको पहले वाले पहले कमांड पर ले जाना चाहिए vi, जैसे कि vim somefile। में प्रवेश करUp आपको अगले पिछले उदाहरण पर ले जाएगा, और इसी तरह।

आप यहाँ पढ़ी जाने वाली सभी बाइंडिंग के बारे में अधिक पढ़ सकते हैं: http://linux.about.com/library/cmd/blcmdl3_readline.htm


10

आपने जो सुझाव दिया है, उसे करने के लिए अपने .inputrc को ~ / में निम्न जोड़ें:

"\e[B": history-search-forward
"\e[A": history-search-backward

शायद आप भी अपने .bash_profile में निम्न जोड़ना चाहें:

export INPUTRC=~/.inputrc

क्या आप इस "निर्यात" को करने के बारे में विस्तार से बता सकते हैं?
टेक्सिन

2

एक "!" जिस कमांड की आपको तलाश है। यदि आप ऊपर और नीचे तीरों की कार्यक्षमता को बदलना चाहते हैं, तो इनपुट आर्क फ़ाइल को संशोधित करना (जैसे अन्य उत्तर सुझाते हैं) जाने का रास्ता है।

यदि "कमांड" वह कमांड है जिसे आप खोज रहे हैं, तो इसे दर्ज करें:

!comm

आपको आउटपुट के रूप में "कमांड" मिलना चाहिए।

इसी तरह, यदि आप एक कमांड ढूंढना चाहते हैं, जिसमें कमांड का हिस्सा शामिल हो (लेकिन शुरू नहीं हो सकता है), ctrl + r दबाएँ और फिर कमांड के हिस्से में टाइप करें।

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

आप यहां इतिहास फ़ाइल को "महारत हासिल" करने के बारे में अधिक पढ़ सकते हैं: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

यह /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line का संभावित डुप्लिकेट है


अन्य उत्तर मेरे प्रश्न का अधिक सही उत्तर देते हैं, लेकिन पॉइंटर से एसओ के लिए धन्यवाद (यह भी देखें meta.stackexchange.com/q/4708/172266 )।
gerrit
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.