रीडलाइन आपको अपनी होम डाइरेक्टरी में .inputrc कॉन्फ़िगरेशन फ़ाइल को संपादित करके अपने स्वयं के कस्टम कीबाइंडिंग को मैप करने की क्षमता भी प्रदान करती है।
निम्नलिखित दो प्रकार के कस्टम कीबाइंडिंग हैं जिन्हें आप परिभाषित कर सकते हैं:
- मैक्रोज़
- कार्य
मैक्रो
आप एक कीबाइंडिंग को परिभाषित कर सकते हैं, जो निष्पादित होने पर, कर्सर की वर्तमान स्थिति में वर्णों की एक स्ट्रिंग भर देगा। ऐसा करने के लिए अपनी .inputrc कॉन्फ़िगरेशन फ़ाइल में निम्न प्रारूप के साथ एक पंक्ति जोड़ें (या फ़ाइल बनाएं यदि यह अभी तक मौजूद नहीं है):
<key combination>: "<string of characters>"
उदाहरण के लिए, मान लें कि मैं खुद को बार-बार आउटपुट को "~/debug_output.txt" फ़ाइल में रीडायरेक्ट करता हुआ पाता हूं। मैं निम्नलिखित पंक्ति जोड़कर अपने .inputrc में एक मैक्रो को परिभाषित कर सकता हूं:
Control-g: " > ~/debug_output.txt"
अब, जब भी मैं कुंजी संयोजन Control-g टाइप करता हूं, तो मेरे कर्सर के बाद रीडायरेक्ट स्टेटमेंट जोड़ा जाएगा, जिससे मैं इसे आसानी से अन्य कमांड के अंत में जोड़ सकता हूं।
मैक्रोज़ बनाते समय निम्नलिखित बातों का ध्यान रखें:
<केंद्र> केंद्र>- मैं कुंजी संयोजनों को अंग्रेजी में लिख सकता हूं (इस पर अधिक जानकारी के लिए, बैश के लिए मैन पेज देखें। "रीडलाइन की बाइंडिंग" अनुभाग खोजें)
- मैक्रो द्वारा सम्मिलित किए जाने वाले वर्णों का क्रम दोहरे उद्धरण चिह्नों में लपेटा जाना चाहिए (")
- कंट्रोल-जी का चुनाव मनमाना था, आप एक ऐसा संयोजन चुन सकते हैं जो आपके लिए अधिक सार्थक हो।
- डिफ़ॉल्ट कीबाइंडिंग को ओवरराइड करना संभव है (अपनी खुद की परिभाषित करते समय इसे ध्यान में रखें)
- कीबाइंडिंग प्रभावी होने के लिए, आपको एक नया शेल इंस्टेंस शुरू करना होगा (.inputrc कॉन्फिग फाइल शेल स्टार्टअप पर पढ़ी जाती है)
कार्य
आप एक कीबाइंडिंग भी बना सकते हैं, जो निष्पादित होने पर, एक फ़ंक्शन को कॉल करेगा। रीडलाइन चुनने के लिए बड़ी संख्या में पूर्व-निर्धारित कार्य प्रदान करता है। किसी पूर्व-निर्धारित फ़ंक्शन के लिए कुंजी संयोजन को मैप करने के लिए:
<key combination>: <function-name>
उपलब्ध पूर्व-निर्धारित कार्यों की सूची के लिए, जीएनयू रीडलाइन मैनुअल देखें।
अपने स्वयं के कस्टम फ़ंक्शंस को परिभाषित करना भी संभव है, लेकिन इसके लिए उन्हें C में लिखना आवश्यक है और यह इस ट्यूटोरियल के दायरे से बाहर है। हम इसे बाद में एक अलग ट्यूटोरियल के रूप में कवर कर सकते हैं।
एक उपयोगी पूर्व-निर्धारित फ़ंक्शन मेनू-पूर्ण है। यह एक वैकल्पिक स्वतः पूर्णता व्यवहार प्रदान करता है।
स्वतः पूर्णता के लिए डिफ़ॉल्ट व्यवहार (TAB कुंजी में मैप किया गया) या तो है:
- आंशिक कमांड/निर्देशिका/फ़ाइल नाम भरें यदि एक एकल मिलान मौजूद है
- 1 से अधिक मौजूद होने पर संभावित मैचों की सूची प्रदर्शित करें
मेनू-पूर्ण इसके बजाय संभावित मैचों की सूची के माध्यम से चक्र करेगा, प्रत्येक बार फ़ंक्शन को कॉल करने पर अगला संभावित मिलान भरना होगा। यह व्यवहार अच्छा हो सकता है, खासकर जब लंबे फ़ाइल नामों को स्वतः पूर्ण करना। इस व्यवहार का उपयोग करने के लिए TAB कुंजी को रीमैप करने के लिए, अपनी .inputrc फ़ाइल में निम्न पंक्ति जोड़ें।
TAB: menu-complete
ध्यान दें कि यह नया कीबाइंडिंग वर्तमान शेल में प्रभावी नहीं होगा, आपको .inputrc कॉन्फ़िगरेशन फ़ाइल को पुनः लोड करने के लिए एक नया इंस्टेंस शुरू करना होगा
इस ट्यूटोरियल में हमने सीखा है कि लिनक्स कमांड लाइन कीबाइंडिंग रीडलाइन नामक टूल द्वारा संचालित होती है। कीबाइंडिंग 2 में से 1 प्रकार की हो सकती है:
- मैक्रो:वर्णों के अनुक्रम का विस्तार करता है
- कार्य:एक क्रिया करता है
रीडलाइन हमें डिफ़ॉल्ट कीबाइंडिंग का एक सेट प्रदान करता है, लेकिन हमें .inputrc कॉन्फ़िगरेशन फ़ाइल में अपना स्वयं का बनाने के लिए लचीलापन भी प्रदान करता है। अंत में, सभी मौजूदा कीबाइंडिंग देखने के लिए, हम 'बाइंड' कमांड का उपयोग कर सकते हैं।
bind -p