कमांड-लाइन के लिए कीबोर्ड शॉर्टकट क्या हैं?


10

मैं उस कीबोर्ड शॉर्टकट के बारे में बात कर रहा हूं जिसका उपयोग आप कमांड-लाइन / टर्मिनल में करते हैं।

उदाहरण: Ctrl+ cजो प्रक्रिया को मारता है, Ctrl+ dवह लॉगआउट, Ctrl+ zजो प्रक्रिया को पृष्ठभूमि में भेजता है ... आदि।

मैं कुछ परीक्षण किया और पाया कि वे कर रहे हैं न टर्मिनल (यानी गए हैं gnome-terminal, xterm, konsole) विशिष्ट है और न ही खोल (यानी bash, zsh) विशिष्ट, वे भी पर काम ttyरों।

इसलिए, मैं जानना चाहता हूं:

  • ये शॉर्टकट कौन प्रदान करता है?
  • मैं उन्हें कैसे सूचीबद्ध और संशोधित / परिभाषित कर सकता हूं?

bind -pसूचीबद्ध करने का प्रयास करें , ताकि help bindअन्य के लिए
कोस्टास

जवाबों:


10

कर्नेल के टर्मिनल ड्राइवर ( termios) विशेष कुंजियों की व्याख्या करता है, जो किसी प्रक्रिया को संकेत भेजने, फ़ाइल के अंत भेजने, वर्णों को मिटाने आदि के लिए टाइप किया जा सकता है। यह मूल यूनिक्स कर्नेल कार्यक्षमता है और अधिकांश यूनिक्स और लिनक्स कार्यान्वयन पर समान है।

sttyआदेश प्रदर्शित करता है या सेट termiosविशेष वर्ण, साथ ही टर्मिनल लाइन ड्राइवर के लिए अन्य पैरामीटर।

stty -aविशेष वर्णों और अन्य "टर्मिनल लाइन सेटिंग्स" के वर्तमान मूल्यों को देखने के लिए आमंत्रित करें। निम्न उदाहरण में, आप देख सकते हैं कि intrहै Ctrl+ C, eofहै Ctrl+ D, suspहै Ctrl+ Z। (मैंने केवल विशेष वर्ण सेटिंग्स दिखाने के लिए अन्य आउटपुट हटा दिया है):

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; min = 1; time = 0;

stty -a FreeBSD पर विशेष वर्ण:

cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
        erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;

विशेष वर्ण के मान को बदलने के लिए, उदाहरण के लिए, रुकावट के चरित्र को Ctrl+ Cसे Ctrl+ Eइनवोक में बदलने के लिए sttyइस तरह से ( ^Eशाब्दिक रूप से दो वर्ण हैं, ^अक्षर E) ( अक्षर के बाद ):

stty intr '^E'

अधिक जानकारी के लिए sttyऔर के लिए मैन पेज देखें termios। जीएनयू / लिनक्स पर आप tty_ioctlमैन पेज भी देख सकते हैं ।

टिप्पणियाँ:

intrकुंजी ( Ctrl+ Cडिफ़ॉल्ट रूप से), वास्तव में प्रक्रिया को मारने नहीं है, लेकिन (व्यवधान संकेत भेजने के लिए कर्नेल का कारण बनता है SIGINT) प्रक्रिया समूह के भीतर सभी प्रक्रियाओं के लिए। प्रक्रियाएं सिग्नल को पकड़ने या अनदेखा करने की व्यवस्था कर सकती हैं, लेकिन अधिकांश प्रक्रियाएं समाप्त हो जाएंगी, जो कि डिफ़ॉल्ट व्यवहार है।

कारण यह है कि Ctrl+ dआपको लॉग आउट करता है, क्योंकि टर्मिनल लाइन ड्राइवर शेल के मानक इनपुट पर ईओएफ (फ़ाइल का अंत) भेजता है। शेल से बाहर निकलता है जब यह मानक इनपुट पर फ़ाइल का अंत प्राप्त करता है।


@Sukminder, FreeBSD पर, POSIX -aविकल्प को जोड़ा गया था stty
राबर्ट १

मैंने कोशिश की है stty intr '^E'यह काम करता है (सेट) लेकिन अस्थायी रूप से और वर्तमान टर्मिनल / ट्टी के लिए ही। मैं इसे विश्व स्तर पर और स्थायी रूप से कैसे बदलूं?
पंड्या

मुझे लगता है कि sttyआपके $ HOME / .profile या $ HOME / .bashrc या कुछ अन्य शेल स्टार्टअप इनिशियलाइज़ेशन फ़ाइल में निवेश करने का सबसे अच्छा तरीका होगा ।
राबर्ट

मैंने कोशिश की है: यह टर्मिनल के साथ काम करता है लेकिन इसमें कोई प्रभाव नहीं हैtty
पंड्या

आपने क्या प्रयास किया, आप क्या देखते हैं, और आपका क्या मतलब है tty? शायद यह एक नया प्रश्न हो सकता है?
रॉबर्टएल

15

से http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/

कमांड एडिटिंग शॉर्टकट

  • Ctrl+ a- कमांड लाइन की शुरुआत में जाएं
  • Ctrl+ e- कमांड लाइन के अंत में जाएं
  • Ctrl+ k- कमांड लाइन के अंत में कर्सर से हटाएं
  • Ctrl+ u- कमांड लाइन की शुरुआत के लिए कर्सर से हटाएं
  • Ctrl+ w- शब्द के प्रारंभ से कर्सर से हटाएं (यानी पीछे से एक शब्द हटाएं)
  • Ctrl+ y- पेस्ट शब्द या पाठ जो कर्सर के बाद डिलीट शॉर्टकट (जैसे ऊपर वाला) का उपयोग करके काटा गया था
  • Ctrl+ xx- कमांड लाइन और वर्तमान कर्सर स्थिति की शुरुआत के बीच कदम (और फिर से वापस)
  • Alt+ b- एक शब्द पीछे ले जाएं (या कर्सर वर्तमान में चालू है)
  • Alt+ f- एक शब्द आगे बढ़ाएं (या कर्सर वर्तमान में चालू है)
  • Alt+ d- कर्सर पर शुरू होने वाले शब्द के अंत तक हटाएं (अगर शब्द की शुरुआत में पूरा शब्द है)
  • Alt+ c- कर्सर पर शुरू होने वाले शब्द के अंत को कैपिटलाइज़ करें (यदि शब्द की शुरुआत में कर्सर है तो पूरा शब्द)
  • Alt+ u- शब्द के अंत में कर्सर से अपरकेस बनाएं
  • Alt+ l- शब्द के अंत में कर्सर से लोअरकेस बनाएं
  • Alt+ t- पूर्व के साथ वर्तमान शब्द स्वैप करें
  • Ctrl+ f- एक चरित्र को आगे बढ़ाएं
  • Ctrl+ b- पिछड़े एक चरित्र को आगे बढ़ाएं
  • Ctrl+ d- कर्सर के नीचे का वर्ण हटाएं
  • Ctrl+ h- कर्सर से पहले वर्ण हटाएं
  • Ctrl+ t- पिछले वाले कर्सर के नीचे स्वैप कैरेक्टर

कमांड रिकॉल शॉर्टकट

  • Ctrl+ r- इतिहास को पीछे की ओर खोजें
  • Ctrl+ g- इतिहास खोज मोड से बच
  • Ctrl+ p- इतिहास में पिछली कमांड (यानी कमांड इतिहास पर वापस जाएं)
  • Ctrl+ n- इतिहास में अगली कमांड (यानी कमांड इतिहास के माध्यम से आगे बढ़ना)
  • Alt+ .- पिछले कमांड के अंतिम शब्द का उपयोग करें

कमांड कंट्रोल शॉर्टकट

  • Ctrl+ l- स्क्रीन को साफ़ करें
  • Ctrl+ s- स्क्रीन पर आउटपुट को रोकता है (लंबे समय तक चलने वाले वर्बोज़ कमांड के लिए)
  • Ctrl+ q- स्क्रीन पर आउटपुट की अनुमति दें (यदि पहले ऊपर कमांड का उपयोग बंद कर दिया गया है)
  • Ctrl+ c- कमांड को समाप्त करें
  • Ctrl+ z- कमांड को निलंबित / रोकें

बैश बैंग (!) कमांड्स

बैश में कुछ उपयोगी विशेषताएं भी हैं जो उपयोग करते हैं! (बैंग) आपको बैश कमांड के साथ कुछ फंकी सामान करने की अनुमति देता है।

  • !! - अंतिम कमांड चलाएं
  • ब्लाह - सबसे हालिया कमांड चलाएं जो 'ब्लाह' से शुरू होती है (जैसे! ls)
  • ब्लाह: p - उस कमांड का प्रिंट आउट लें जो ब्लाह चलाएगा (इसे कमांड इतिहास में नवीनतम कमांड के रूप में भी जोड़ता है)
  • ! $ - पिछले कमांड का अंतिम शब्द ( Alt + के समान )
  • $: p - उस शब्द का प्रिंट आउट लें ! $ विकल्प होगा
  • ! * - पिछले शब्द को छोड़कर पिछला कमांड (जैसे यदि आप टाइप करते हैं ' some_file.txt / ' खोजें, तो ! * आपको ' some_file.txt ' ढूंढेगा )
  • *!: पी - प्रिंट आउट क्या ! * विकल्प होगा

1
@Sukminder नहीं, Ctrl + S आउटपुट को रोक देता है। आप इसे Ctrl + Z के साथ भ्रमित कर रहे हैं।
गिल्स एसओ- बुराई को रोकें

इसे भी देखें: Emacs
एरिक

अच्छा! और वहाँ तक पहुँचने के लिए एक रास्ता है ^U, कि stty -aलिनक्स पर SIGKILL के लिए परिभाषित दिखाता है, मार से? अधिमानतः रीडलाइन सामान (शायद एक तीसरे मॉड / मेटा कुंजी के माध्यम से) को अपरिभाषित किए बिना। मुझे लगता है कि यह केवल ctrl + u रीडलाइन बाइंडिंग द्वारा छाया हुआ है?
nyov
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.