Bash kısayol tuşları listesini almak için herhangi bir kılavuz var mı?

21

İşi daha kolay ve hızlı hale getirmek için bash komut satırı ile etkileşim kurarken kullandığım birçok kısayol var.

gibi:

  • ctrl + L : ekranı temizlemek için
  • ctrl + a / ctrl + e : satırın başlangıcını / sonunu hareket ettirmek için
  • ctrl + r : komut geçmişini aramak için birkaç karakter yazıyor
  • ctrl + u / ctrl + y : çizgiyi kesmek / yapıştırmak.

ve daha birçokları, bilmek istediğim ve kesinlikle öğrenecekleri faydalı olacaklar.

Ubuntu'da bu kısayolların listesini nereden bulabilirim? Bu kısayolları listeleyen herhangi bir kılavuz var mı?

NOT:

Kısayolların listesini ve eylemlerini tek bir yerde almak istiyorum. Pek çoklarını küçük bir süre içinde öğrenmeye gerçekten yardımcı olacaktır. Öyleyse listeyi böyle alabilir miyiz? Yine de burada verilen cevap için teşekkürler ..

    
sordu Saurav Kumar 08.04.2014 00:40

5 cevap

22

Varsayılanlar, her komutun yaptığı ayrıntılarla birlikte man bash cinsindendir. Anahtar bağlarınızı değiştirdiyseniz BroSlow'un cevabına bakın.

   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.

DÜZENLEME

Bu komutların tümü, kılavuzun bitişik bir bölümünde bulunur, böylece Commands for Moving 'den göz atabilirsiniz. Alternatif olarak, bu bölümün tamamını

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

(N.B. bu, varsayılan klavye kısayolu olmayan komutlar dahil olmak üzere tüm bölümü yazdırır.)

Hata kodunun açıklaması

  • Commands for Moving değerinin (yalnızca) gerçekleştiği yerde, print_this değişkenini 1 olarak ayarlayın.
  • Aşağıdaki kısım olan Programmable Completion değerinin (yalnızca) gerçekleşmesinde, değişkeni 0 olarak ayarlayın.
  • Değişken 1 ise, öndeki boşluktan (üç boşluk) kurtulun ve çizgiyi yazdırın.
verilen cevap Sparhawk 08.04.2014 01:25
18

Mevcut bash kabuğunuzdaki tüm kısayolları bash yapısını bind seçeneği ile "> -P .

örn.

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

Bunları değiştirmek için

gibi bir şey yapabilirsiniz
 bind '\C-p:clear-screen'

Ve onu kalıcı hale getirmek için bir init dosyasına koyun (bir kerede tek bir şeye bağlı bir tuş kombinasyonuna sahip olabileceğinizi unutmayın, böylece daha önce sahip olduğu herhangi bir bağı kaybedecektir).

    
verilen cevap BroSlow 08.04.2014 03:06
7

Aşağıdaki komut, kullanım ve kısayolları gösteren güzel bir sütun çıkışı verir.

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

Bu,

gibi görünen bir çıktı verir
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". 
...

Bu çıkışı aşağıdaki komutu kullanarak bir metin dosyasına alın

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

Dosya $ HOME dizininizde oluşturulur.

Açıklama

  • tüm kısayolları alır.

    bind -P
    
  • tüm atanmamış kısayolları siler

    grep "can be found"
    
  • çıkışı sıralar

    sort
    
  • ilk sütunu (yani işlevi) yazdırır ve metni onaylar

    awk '{printf "%-40s", }
    
  • Bu, önceki komutun bir parçasıdır. 6+ (yani kısayollar) sütunları yazdırır.

    {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
    
  • Çıkışı kısayollar

    adlı ana dizindeki hoş bir metin dosyasına yerleştirir.
    > shortcuts
    

Komutun aşağıdaki komutları çalıştırarak nasıl çalıştığına dair fikir edinebilirsiniz.

bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort
    
verilen cevap Registered User 08.04.2014 09:59
1

Tamam bash kılavuzu 'nı filtreleyerek kısayolların listesini almanın bir yolunu buldum. Ayrıca, her kısayolun ne yaptığıyla ilgili açıklama da verecektir. Çözümü bulmak için beni aydınlatan Sparhawk sayesinde. İhtiyacım olan şey, normal ifadeler 'ün kullanımını öğrenmekti, ancak yine de iyi değilim:)

  

İşte burada tek satırlık komut:

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

İşte çıktının küçük bir çıkarımı:

   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.
  

Şimdi kısayolları bir dosyaya kaydetmek için:

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

Tek ihtiyacım olan bu. Sadece bash'a atanan kısayol tuşlarını bilmek istedim ve BroSlow 'un bana sorduğu herhangi bir anahtarı yeniden yapılandırmamıştım.

Bir kez daha katkılarından dolayı herkese teşekkürler.

Not :

Birisi bunu geliştirmek isterse, o en çok memnuniyetle karşılanır. Sadece bazı anahtarlar tarafından atanmış olan kısayolların listelenmesinin yolundan bahsetmiştim. Yani eğer birisi bu şekilde tanımlanmış olan bu eylemleri nasıl listeleyeceğini biliyorsa , en çok memnuniyetle karşılanır:)

    
verilen cevap Saurav Kumar 08.04.2014 12:21
1

Başhekim, bu komutu uygunsuz hale getirecek şekilde değiştirilmediği sürece (ki bu pek olası değildir), aşağıdaki komut bash için tüm varsayılan kısayolları gösterir.

man bash | grep -A294 'Commands for Moving'

Bu, aşağıdaki gibi görünen bir çıktı verir:

 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)
...

Eğer bash el kitabı değiştirilirse, bu komut ihtiyaçlara uyacak şekilde kolayca değiştirilebilir.

    
verilen cevap Registered User 20.04.2014 07:09

Etiketlerdeki diğer soruları oku