Bash शॉर्टकट्स में Ctrl + m और Ctrl + q का उपयोग क्यों नहीं किया जाता है?


15

हाल ही में मैं बैश शॉर्टकट कुंजियों की समीक्षा कर रहा हूं, और मेरे tmux सक्रिय कुंजी के लिए एक उपयुक्त एक खोजने की कोशिश कर रहा हूं।

मुझे यह दिलचस्प लगता है कि ctrl + mऔर ctrl + qइसका उपयोग bash शॉर्टकट में नहीं किया जाता है, https://en.wikipedia.org/wiki/Bash_(Unix_shell के अनुसार )

उनका उपयोग क्यों नहीं किया जाता है? मुझे लगता ctrl + mहै काफी काम है।

क्या ये दो संयोजन DIY (define it yourself)उपयोग के लिए डिज़ाइन के अनुसार हैं ? या कोई और कहानी है?


1
उपयोग करना ALT + mऔर भी अधिक सुविधाजनक है।
रॉल्फ

जवाबों:


16

Ctrl + M टर्मिनल में Enter कुंजी के समान अक्षर (RET) भेजता है। कार्यक्रमों के पास उन्हें अलग से बताने का कोई तरीका नहीं है, इसलिए इन कुंजियों को अलग से कॉन्फ़िगर नहीं किया जा सकता है।

Ctrl + Q पहले से ही XON के लिए डिफ़ॉल्ट रूप से उपयोग किया जाता है , इसलिए इसका उपयोग Bash द्वारा नहीं किया जा सकता है, लेकिन आपको अभी भी इसे tmux में उपयोग करने में सक्षम होना चाहिए, क्योंकि tmux कच्चे इनपुट मोड का उपयोग करता है।

एक GUI प्रोग्राम कीबोर्ड से पढ़ सकता है, कि कुंजी m को संशोधक Ctrl के साथ दबाया गया है और शॉर्टकट के रूप में Ctrl + m का उपयोग करते हैं, लेकिन एक शेल या कोई भी टर्मिनल प्रोग्राम Ctrl + Key संयोजनों को केवल 0 से 26 तक ascii वर्णों के रूप में पुन: प्राप्त करता है।

Ctrl+@ = 0
Ctrl+A = 1
Ctrl+B = 2

और इसी तरह। मूल्यों को देखने के लिए आप यह कोशिश कर सकते हैं

cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006  \n

मान दर्ज करने के लिए Ctrl + v को Ctrl + [af] से पहले दबाएं ताकि उन्हें कच्चे मान के रूप में निर्बाध रूप से प्राप्त कर सकें।

जब आप आस्की (7) तालिका को देखते हैं तो आप तालिका में नियंत्रण कोड को संबंधित वर्ण @ .. Z के बाईं ओर देख सकते हैं। उदाहरण के लिए

015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M

या

011   9     09    HT  '\t' (horizontal tab)   111   73    49    I

अगली परत जो बैश होने से पहले नियंत्रण कोड की व्याख्या करती है, वह है (टर्मिनल सेटिंग्स बदलें और प्रिंट करें)

stty -a
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;

के अर्थ के लिए stty (1) को देखने lnextया startऔर stop

बैश के रूप में रीडलाइन (3) भी देखें और अन्य जीएनयू क्ली प्रोग्राम इनपुट लाइन्स को नियंत्रित करने के लिए उस लाइब्रेरी का उपयोग करते हैं और निश्चित रूप से बैश (पेज 1) / रीडायस्ट, बैश मैनुअल पेज के रीडलाइन सेक्शन को।

नोट: XYZ (NUM) का अर्थ है मैनुअल पेज XYZ सेक्शन NUM, इसलिए इसका परिणाम man NUM XYZ


1
बैश में Cs (XOFF) के लिए एक डिफ़ॉल्ट बाइंडिंग है, इसलिए वे Cq के लिए भी एक डाल सकते थे।
गिल्स एसओ- बुराई को रोकना '

दरअसल, डिफ़ॉल्ट रूप से, GNU रीडलाइन लाइब्रेरी जो बैश का उपयोग करता है C-q, वह उसी चीज़ के साथ बांधता है C-v, quoted-insertजो Emacs फ़ंक्शन का क्लोन है जो कुंजी और कुंजी कॉम्बोस द्वारा उत्पन्न एस्केप कोड का पता लगाने के लिए उपयोगी है। यहाँ पढ़ें मैनुअल का प्रासंगिक हिस्सा है: tiswww.case.edu/php/chet/readline/readline.html#SEC9
ssokolow
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.