क्या बैश शॉर्टकट कुंजियों की सूची प्राप्त करने के लिए कोई मैनुअल है?


21

कई शॉर्टकट हैं जो मैं काम को आसान और तेज करने के लिए बैश कमांड लाइन के साथ बातचीत करते समय उपयोग करते हैं ।

पसंद:

  • ctrl+ L: स्क्रीन को साफ़ करने के लिए
  • ctrl+ a/ ctrl+ e: लाइन के प्रारंभ / अंत को स्थानांतरित करने के लिए
  • ctrl+ r: कमांड का इतिहास खोजने के लिए सिर्फ कुछ वर्णों को लिखना
  • ctrl+ u/ ctrl+ y: लाइन को काटने / चिपकाने के लिए।

और कई और अधिक, जो मैं जानना चाहता हूं और जो निश्चित रूप से सीखने के लिए उपयोगी होगा।

मैं जानना चाहता हूं कि मुझे उबंटू में इन शॉर्टकट्स की सूची कहां से मिल सकती है? क्या कोई मैनुअल है जो इन शॉर्टकट्स को सूचीबद्ध करता है?

ध्यान दें:

मैं एक ही स्थान पर शॉर्टकट और उनके कार्यों की सूची प्राप्त करना चाहता हूं। यह वास्तव में समय की एक छोटी सी अवधि में उनमें से कई को सीखने में मदद करेगा। तो क्या इस तरह हम सूची प्राप्त कर सकते हैं? हालांकि यहाँ दिए गए उत्तर के लिए धन्यवाद ..

जवाबों:


22

डिफॉल्ट में है man bash, साथ ही विवरण के साथ कि प्रत्येक कमांड क्या करता है। यदि आपने अपने प्रमुख बाइंडिंग को बदल दिया है, तो ब्रॉस्लो का उत्तर देखें।

   Commands for Moving
       beginning-of-line (C-a)
              Move to the start of the current line.
       end-of-line (C-e)
              Move to the end of the line.
       forward-char (C-f)
              Move forward a character.
       backward-char (C-b)
              Move back a character.
       forward-word (M-f)
              Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
       backward-word (M-b)
              Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters and digits).
       shell-forward-word
              Move forward to the end of the next word.  Words are delimited by non-quoted shell metacharacters.
       shell-backward-word
              Move back to the start of the current or previous word.  Words are delimited by non-quoted shell metacharacters.
       clear-screen (C-l)
              Clear the screen leaving the current line at the top of the screen.  With an argument, refresh the current line without clearing the screen.

...

       reverse-search-history (C-r)
              Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

...

       unix-line-discard (C-u)
              Kill backward from point to the beginning of the line.  The killed text is saved on the kill-ring.

...

       yank (C-y)
          Yank the top of the kill ring into the buffer at point.

संपादित करें

ये कमांड मैनुअल के एक सन्निहित भाग में हैं, जिससे आप इसे ब्राउज़ कर सकते हैं Commands for Moving। वैकल्पिक रूप से, आप इस संपूर्ण अनुभाग को एक पाठ फ़ाइल के साथ सहेज सकते हैं

man bash | awk '/^   Commands for Moving$/{print_this=1} /^   Programmable Completion$/{print_this=0} print_this==1{sub(/^   /,""); print}' > bash_commands.txt

(एनबी यह पूरे अनुभाग को प्रिंट करता है, जिसमें कोई डिफ़ॉल्ट कीबोर्ड शॉर्टकट नहीं है।)

Awk कोड की व्याख्या

  • (केवल) की घटना पर Commands for Moving, चर print_thisको 1 पर सेट करें ।
  • की (केवल) घटना पर Programmable Completion, जो निम्न अनुभाग है, चर को 0 पर सेट करें।
  • यदि चर 1 है, तो अग्रणी व्हाट्सएप (तीन रिक्त स्थान) से छुटकारा पाएं, और लाइन प्रिंट करें।

1
ये डिफ़ॉल्ट शॉर्टकट हैं, जरूरी नहीं कि ओपी की वास्तविक प्रणाली पर शॉर्टकट हों। bind -Pअधिक सटीक होगा।

@BroSlow अच्छी टिप्पणी। मुझे अभी भी लगता है कि मेरे उत्तर में योग्यता है, हालांकि, क्योंकि यह इस बारे में अधिक क्रिया है कि कमांड क्या करते हैं। यदि आप इसे एक उत्तर के रूप में लिखते हैं, तो मैं +1 करूँगा।
स्पार्कवोक

@ उत्तर: आपके उत्तर के लिए +1। मैं एक स्थान पर शॉर्टकट की सूची खोज रहा हूं। तो अगर bash मैनुअल मुझे सभी शॉर्टकट के बारे में बता सकता है, तो मैं इसे एक साथ कैसे प्राप्त करूँगा, जैसे आपने यहाँ उत्तर दिया है !! आपको इस तरह की सूची कैसे मिली? क्या कार्रवाई के साथ शॉर्टकट पार्स करने और इसे किसी अन्य फ़ाइल में सहेजने का कोई तरीका है? मुझे आपके जवाब का इंतज़ार रहेगा ..
सौरव कुमार

यदि आप bash मैनुअल खोजते हैं Readline Command Names, तो आप इस अनुभाग में सभी कमांड देखेंगे। मैं इसे पाठ फ़ाइल में निकालने के लिए एक छोटी स्क्रिप्ट लिखूंगा, लेकिन मैं इसे अभी नहीं कर सकता (मेरे पास कुछ घंटों में समय होगा)।
Sparhawk

@ श्रावक: आपके उत्तर ने मुझे एक साधारण grep फ़िल्टर कमांड लिखने में मदद की। यहाँ यह जाँच करें कि आप इसे पसंद करेंगे। आपकी सहायता के लिए धन्यवाद। हालाँकि मुझे आपकी स्क्रिप्ट का इंतज़ार है .. :)
सौरव कुमार

20

आप विकल्प के bindसाथ बैश बिलिन को कॉल करके अपने वर्तमान बैश शेल में सभी शॉर्टकट सूचीबद्ध कर सकते हैं -P

जैसे

bind -P | grep clear
clear-screen can be found on "\C-l".

उन्हें बदलने के लिए, आप कुछ ऐसा कर सकते हैं

 bind '\C-p:clear-screen'

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


नाम से खोजकर शॉर्टकट कुंजी प्राप्त करना मेरे लिए थोड़ा असामान्य है और एक लंबी प्रक्रिया भी है। क्या एक ही स्थान पर शॉर्टकट की सूची प्राप्त करने का कोई सरल तरीका है? उम्मीद है आप समझ गए होंगे। +1 हालांकि इस दृष्टिकोण के लिए ..
सौरव कुमार

2
@ सौरवकुमार bind -Pको आपको सभी शॉर्टकट देने चाहिए। यदि आप उन लोगों की अनदेखी करने का मतलब है जो बाँध / रीडलाइन कार्यों के लिए मैपिंग नहीं करते हैं, तो आप कुछ ऐसा कर सकते हैंbind -P | grep -v "not bound"

7

निम्न आदेश उपयोग और शॉर्टकट दिखाते हुए एक अच्छा स्तंभ आउटपुट देता है।

bind -P | grep "can be found" | sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'

यह एक आउटपुट देता है, जो दिखता है

abort                                   "\C-g", "\C-x\C-g", "\e\C-g". 
accept-line                             "\C-j", "\C-m". 
backward-char                           "\C-b", "\eOD", "\e[D". 
backward-delete-char                    "\C-h", "\C-?". 
backward-kill-line                      "\C-x\C-?". 
backward-kill-word                      "\e\C-h", "\e\C-?". 
backward-word                           "\e\e[D", "\e[1;5D", "\e[5D", "\eb". 
beginning-of-history                    "\e<". 
beginning-of-line                       "\C-a", "\eOH", "\e[1~", "\e[H". 
call-last-kbd-macro                     "\C-xe". 
capitalize-word                         "\ec". 
character-search-backward               "\e\C-]". 
character-search                        "\C-]". 
clear-screen                            "\C-l". 
complete                                "\C-i", "\e\e". 
...

निम्नलिखित कमांड का उपयोग करके इस आउटपुट को टेक्स्ट फ़ाइल में प्राप्त करें

bind -P|grep "can be found"|sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}' > ~/shortcuts

फ़ाइल को आपके $ HOME डायरेक्टरी में बनाया गया है।

व्याख्या

  • सभी शॉर्टकट प्राप्त करता है।

    bind -P
  • सभी गैर-असाइन किए गए शॉर्टकट निकालता है

    grep "can be found"
  • उत्पादन को हल करें

    sort
  • पहले कॉलम (यानी फंक्शन) को प्रिंट करता है और टेक्स्ट को जस्टिफाई करता है

    awk '{printf "%-40s", $1}
  • यह पिछली कमांड का हिस्सा है। यह कॉलम 6+ (यानी शॉर्टकट) प्रिंट करता है।

    {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
  • शॉर्टकट नाम के होम डायर में आउटपुट को एक अच्छी टेक्स्ट फ़ाइल में डालता है

    > shortcuts

आप यह सोच सकते हैं कि निम्न कमांड को चलाकर कमांड कैसे काम करता है।

bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort

@ सौरवकुमार आप चाहते हैं कि मैं उत्तर में कुछ जोड़ूं?
पंजीकृत उपयोगकर्ता

2
आपके उत्तर के लिए +1 और इसे और अधिक सार्थक बनाने के लिए .. :) मैं चूक गया और इसने वाक्य का पूरा अर्थ बदल दिया;) नहीं, आपको किसी भी चीज़ को जोड़ने की आवश्यकता नहीं है। आपने अपना सर्वश्रेष्ठ प्रदर्शन किया है ..
सौरव कुमार

+1 अच्छा आदेश! मैंने इसे अनसेट शॉर्टकट शामिल करने के लिए विस्तारित किया है:bind -P | tail -n +2 | sort | awk '{printf "%-40s", $1} {if ($6 == "any") {printf"\n"} else {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}}'
wjandrea

1

ठीक है, मुझे बैश मैनुअल को फ़िल्टर करके शॉर्टकट की सूची प्राप्त करने का एक तरीका मिला है । यह विवरण भी देगा कि प्रत्येक शॉर्टकट वास्तव में क्या करता है। Sparhawk के लिए धन्यवाद जिन्होंने मुझे समाधान खोजने के लिए प्रबुद्ध किया। मुझे जो चाहिए था वह नियमित भावों के उपयोग को सीखना था, हालाँकि मैं अभी भी इसमें अच्छा नहीं हूँ :)

तो यहाँ एक लाइन कमांड है:

man bash | grep "(.-.*)$" -A1

यहाँ उत्पादन का एक छोटा सा निष्कर्षण है:

   beginning-of-line (C-a)
          Move to the start of the current line.
   end-of-line (C-e)
          Move to the end of the line.
   forward-char (C-f)
          Move forward a character.
   backward-char (C-b)
          Move back a character.
   forward-word (M-f)
          Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
   backward-word (M-b)
          Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters and digits).
   clear-screen (C-l)
          Clear the screen leaving the current line at the top of the screen.  With an argument, refresh the current line without clearing the
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
          Fetch the next command from the history list, moving forward in the list.
   beginning-of-history (M-<)
          Move to the first line in the history.
   end-of-history (M->)
          Move to the end of the input history, i.e., the line currently being entered.
   reverse-search-history (C-r)
          Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.
   forward-search-history (C-s)
          Search forward starting at the current line and moving `down' through the history as necessary.  This is an incremental search.

अब शॉर्टकट को फ़ाइल में सहेजने के लिए:

man bash | grep "(.-.*)$" -A1 > bash_shortcuts

बस इतना ही चाहिए। मैं बस बैश करने के लिए सौंपी गई शार्टकट कुंजियों को जानना चाहता था और मैंने किसी भी कुंजी को दोबारा प्राप्त नहीं किया है, जैसा कि ब्रॉस्लो ने मुझसे पूछा था।

एक बार फिर उनके योगदान के लिए सभी को धन्यवाद।

नोट :

यदि कोई इसे बढ़ाना चाहता है, तो उसका सबसे अधिक स्वागत किया जाता है। मैंने केवल उन शॉर्टकट्स को सूचीबद्ध करने के तरीके का उल्लेख किया है जिन्हें कुछ कुंजियों द्वारा निर्दिष्ट किया गया है। इसलिए अगर कोई जानता है कि उन कार्यों को कैसे सूचीबद्ध किया जाए जो इस तरह से उपयोग करके विवरण के साथ असाइन नहीं किए गए हैं , तो सबसे अधिक स्वागत है :)


बहुत अच्छा। हालांकि, एकमात्र समस्या यह है कि यह केवल बहु-पंक्ति विवरणों की पहली पंक्ति को प्रिंट करेगा। इसके अलावा, यह हेडर और कमांड को डिफ़ॉल्ट कीस्ट्रोक्स (जैसे dump-macros) के बिना छोड़ देता है , हालांकि यह वही हो सकता है जो आप चाहते हैं।
स्पार्कवॉक

1

जब तक इस कमांड को अनुचित बनाने के लिए बैश मैनुअल को एक तरह से संशोधित नहीं किया जाता है (जो बहुत संभावना नहीं है), निम्न कमांड सभी डिफ़ॉल्ट शॉर्टकट दिखाएगा bash

man bash | grep -A294 'Commands for Moving'

यह एक आउटपुट देता है जो दिखता है:

 Commands for Moving
   beginning-of-line (C-a)
          Move to the start of the current line.
   end-of-line (C-e)
          Move to the end of the line.
   forward-char (C-f)
          Move forward a character.
   backward-char (C-b)
          Move back a character.
   forward-word (M-f)
          Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
   backward-word (M-b)
          Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters  and
          digits).
   shell-forward-word
          Move forward to the end of the next word.  Words are delimited by non-quoted shell metacharacters.
   shell-backward-word
          Move back to the start of the current or previous word.  Words are delimited by non-quoted shell metacharacters.
   clear-screen (C-l)
          Clear  the  screen  leaving  the  current line at the top of the screen.  With an argument, refresh the current line
          without clearing the screen.
   redraw-current-line
          Refresh the current line.

Commands for Manipulating the History
   accept-line (Newline, Return)
          Accept the line regardless of where the cursor is.  If this line is non-empty, add it to the history list  according
          to  the state of the HISTCONTROL variable.  If the line is a modified history line, then restore the history line to
          its original state.
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
...

यदि बैश मैनुअल को संशोधित किया गया है, तो इस कमांड को आसानी से जरूरतों को पूरा करने के लिए बदला जा सकता है।


अच्छा किया पाटिल !! मैंने इस तरह क्यों नहीं सोचा .. :)
सौरव कुमार

@Patil मैंने लाइनों की संख्या को भी हार्डकोड करने के बारे में सोचा था, लेकिन मुझे लगा कि यह अधिक संभावना है कि बैश मैनुअल में कमांड अनुभाग में लाइनों की संख्या बदल गई थी, बजाय इसके अनुभागों के क्रम को बदल दिए। मैं मानता हूं कि या तो संभवतः संभावना नहीं है।
स्पार्कहॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.