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