उदाहरण: मैं आदेश echo "foobar"
इस तरह हर बार जब मैं F12 मारा संदेश "foobar" स्क्रीन करने के लिए प्रिंट किया जाएगा कि करने के लिए F12 कुंजी बाध्य करने के लिए चाहते हैं। आदर्श रूप से यह किसी भी मनमानी शेल कमांड नहीं हो सकता है, न केवल बिल्टिन। कोई इस बारे में कैसे जाता है?बैश में, मैं कमांड को फ़ंक्शन कुंजी कैसे बांधूं?
उत्तर
आप Ctrl दबाकर चरित्र अनुक्रम एक प्रमुख द्वारा उत्सर्जित निर्धारित कर सकते हैं -। के लिए F12 आदेश पंक्ति पर वी, तो कुंजी में आपकी रुचि है दबाने अपने सिस्टम पर, मैं ^[[24~
मिलता है। ^[
एएससी का प्रतिनिधित्व करता है। विभिन्न प्रकार के टर्मिनलों या टर्मिनल अनुकरणकर्ता एक ही कुंजी के लिए अलग-अलग कोड उत्सर्जित कर सकते हैं।
एक बैश पर संकेत आप इसे बाहर की कोशिश कर सकते कुंजी मैक्रो सक्षम करने के लिए इस तरह एक आदेश डाल सकते हैं।
bind '"\e[24~":"foobar"'
अब, जब आप प्रेस F12, आप कमांड लाइन आगे संपादन के लिए तैयार पर "foobar" मिल जाएगा। आप तुरंत एक आदेश में प्रवेश के लिए एक कीस्ट्रोक चाहता था, तो आप एक नई पंक्ति जोड़ सकते हैं: अब
bind '"\e[24~":"pwd\n"'
जब आप प्रेस F12, आप प्रेस करने दर्ज किए बिना वर्तमान निर्देशिका प्रदर्शित किया मिलेगा। क्या होगा यदि आप पहले से ही लाइन पर कुछ टाइप कर चुके हैं और आप इसका उपयोग स्वचालित रूप से निष्पादित करते हैं? यह गन्दा हो सकता है। हालांकि, अगर आप अपने मैक्रो के हिस्से के रूप रेखा को स्पष्ट कर सकते हैं:
bind '"\e[24~":"\C-k \C-upwd\n"'
अंतरिक्ष यकीन Ctrl कि बनाता है - यू रिंग करने से घंटी रखने के लिए नष्ट करने के लिए कुछ है।
एक बार जब आप मैक्रो जिस तरह से आप चाहते हैं काम कर मिल गया है, आप इसे अपने ~/.inputrc
फ़ाइल में जोड़कर लगातार बना सकते हैं।bind
आदेश या एकल उद्धरण के बाहरी सेट के लिए कोई ज़रूरत नहीं है:
"\e[24~":"\C-k \C-upwd\n"
संपादित करें:
तुम भी एक महत्वपूर्ण बाध्यकारी है कि मौजूदा आदेश पंक्ति को परेशान किए बिना कुछ निष्पादित करेंगे बना सकते हैं।
bind -x '"\eW":"who"'
तब जब आप एक आदेश है कि उदाहरण के लिए एक उपयोगकर्ता नाम की आवश्यकता है, टाइप कर रहे हैं, और आप उपयोगकर्ता के नाम जो लॉग इन होने के पता करने की जरूरत है, तो आप भी दबा सकते हैं Alt - शिफ्ट - डब्ल्यू और who
का आउटपुट प्रदर्शित किया जाएगा और प्रॉम्प्ट को आपके आंशिक कमांड बरकरार और कर्सर को लाइन में उसी स्थिति में फिर से जारी किया जाएगा।
दुर्भाग्यवश, यह F12 जैसी चाबियों के लिए ठीक से काम नहीं करता है जो दो से अधिक वर्णों का उत्पादन करता है। कुछ मामलों में इसे चारों ओर काम किया जा सकता है।
कमांड (who
इस मामले में) कोई निष्पादन योग्य - एक प्रोग्राम, स्क्रिप्ट या फ़ंक्शन हो सकता है।
यह समाधान X11 वातावरण के लिए विशिष्ट है और पार्टी से कोई संबंध नहीं है, लेकिन जोड़ने अपने .Xmodmaps
% loadkeys
keycode 88 = F12
string F12 = "foobar"
%
के लिए निम्न F12 मार पर टर्मिनल के लिए स्ट्रिंग "foobar" भेज देंगे।
ध्यान रखें कि यह शेल चलाने के समान नहीं है। यदि आप वास्तव में एक कमांड चलाने के लिए चाहते हैं, तो आपको एंटर दबा देना होगा (या आपके लिए भेजा गया स्ट्रिंग है)। शायद पहले भी सुरक्षित रहना और लाइन को साफ़ करना चाहते हैं। – Cascabel
यह बहुत ही अच्छा होगा, लेकिन ऐसा लगता है कि यह फेडोरा 20 के रूप में काम नहीं करता है। मैंने एफ 12 के लिए पहले (मेरे मामले में, 9 6) के लिए उचित कुंजीकोड खोजने के लिए xev का उपयोग करने का प्रयास किया और 88 के बजाय इसका उपयोग किया। कोई भी काम नहीं करता है। – BobDoolittle
आप .inputrc में बैश कुंजी बाइंडिंग को परिभाषित कर सकते हैं (जीएनयू रीडलाइन लाइब्रेरी के लिए कॉन्फ़िगरेशन फ़ाइल)। मैक्रो
उदाहरण के लिए: वाक्य रचना
< keysym या कुंजी नाम > है
Control-o: "> output"
एक मैक्रो जो सम्मिलित करता है पैदा करेगा "> उत्पादन" जब आप प्रेस
"\e[11~": "echo foobar"
होगा जब आप F1 दबाते हैं तो एक मैक्रो बनाएं जो "echo foobar" डालें ... मुझे नहीं पता कि F11 के लिए keyym क्या है।
अच्छा, लेकिन यह सिर्फ "सम्मिलित" है, सही? –
आप एक मैक्रो के भीतर "\ n" का उपयोग कर सकते हैं, एक न्यूलाइन कैरेक्टर जोड़ने के लिए: –
यह मेरे लिए बेहतर काम करता है क्योंकि यह टर्मिनल खोलने पर कुंजी मैपिंग को परिभाषित करता है। – Heldraug
- 1. मैं स्थानांतरित कुंजी को लाटेक्स-गणित मोड में कैसे बांधूं?
- 2. मैं emacs में सी- = कैसे बांधूं?
- 3. मैं पूर्ण जेस्ट्री रीलोड ईवेंट पर कॉलबैक फ़ंक्शन कैसे बांधूं?
- 4. मैं एस-अप कैसे बांधूं?
- 5. मैं अपने व्यूमोडेल में स्टैकपैनल कैसे बांधूं?
- 6. मैं सत्र स्टोरेज में ईवेंट कैसे बांधूं?
- 7. मैं कस्टम ऑब्जेक्ट में ग्रिड व्यू को कैसे बांधूं?
- 8. मैं एंड्रॉइड में इस सेवा को कैसे बांधूं?
- 9. मैं बैश फ़ंक्शन कैसे हटा सकता हूं?
- 10. बैश कमांड?
- 11. बैश: मैं स्क्रीन सत्र में कमांड इतिहास कैसे प्राप्त करूं?
- 12. नए खोल में बैश कमांड चलाएं और इस कमांड को
- 13. गिट, कमांड लाइन [गिट बैश] का उपयोग करके सार्वजनिक कुंजी
- 14. बैश में कमांड लाइन तर्क
- 15. मैं एमेक्स में एक कुंजी के लिए लेटेक्सएमके कैसे बांधूं और अगर
- 16. बैश इतिहास में कमांड को दिखाने के लिए कैसे रोकें?
- 17. बैश कमांड या रूबी
- 18. एक बैश स्क्रिप्ट में, बाहर परिभाषित बैश फ़ंक्शन कैसे चलाएं?
- 19. एक बैश कमांड
- 20. बैश में फ़ंक्शन परिभाषा कैसे मुद्रित करें?
- 21. एक बैश फ़ंक्शन
- 22. बैश कमांड का आकार बदलने के लिए बैश कमांड
- 23. मैं बाइंडिंग.पैथ संपत्ति को अंतर्निहित डेटा से कैसे बांधूं?
- 24. बैश कमांड लॉगर
- 25. लिनक्स कमांड लाइन (बैश)
- 26. बैश फ़ंक्शन तर्क त्रुटि देता है "कमांड नहीं मिला"
- 27. पार्स (बैश) टाइम कमांड
- 28. बैश कमांड लाइन
- 29. कमांड लाइन/बैश
- 30. मैं printf कमांड में दशमलव विभाजक को बैश में कैसे बदलूं?
क्या होगा यदि मैं "ctrl + q" में बाध्यकारी जोड़ना चाहता हूं? – kubudi
@ कुबड़ी: 'बाइंड' '\ C-q ": मेनू-पूर्ण' उदाहरण के लिए (या आपके' ~/.inputrc': '" \ C-q ": मेनू-पूर्ण' में)। प्रवाह नियंत्रण को अक्षम करने और^एस और^क्यू उपलब्ध कराने के लिए आपको अपने '~/.bashrc' में' stty -ixon' की भी आवश्यकता हो सकती है। –
आप कहते हैं कि '^ [' 'esc' का प्रतिनिधित्व करता है और फिर आप इसे अपने उदाहरण में' \ e' के लिए प्रतिस्थापित करते हैं। क्या आप समझा सकते हैं कृपया क्यों? – Remover