Komut satırı için klavye kısayolları nelerdir?


10

Komut satırı / terminalde kullandığınız klavye kısayollarından bahsediyorum.

Örnek: Ctrl+ cişlemi öldüren, Ctrl+ doturumdan çıkan, Ctrl+ zişlemi arka plana gönderen ... vb.

Bazı test edilmiş ve onlar terminali (yani ne olduğunu tespit ettik gnome-terminal, xterm, konsole) spesifik ne de kabuk (yani bash, zshat) belirli, hatta çalışma ttys.

Yani bilmek istiyorum:

  • Bu kısayolları kim sağlıyor?
  • Bunları nasıl listeleyebilir ve değiştirebilir / tanımlayabilirim?

Diğerleri bind -pgibi listelemeye çalışınhelp bind
Costas

Yanıtlar:


10

Çekirdeğin terminal sürücüsü ( termios), bir işleme sinyal göndermek, dosya sonu göndermek, karakterleri silmek vb. İçin yazılabilen özel tuşları yorumlar. Bu temel Unix çekirdek işlevselliğidir ve çoğu Unix ve Linux uygulamasında çok benzerdir.

sttyKomut veya ayarlar termiosözel karakterler, hem de uç hat sürücüsü için diğer parametreler.

Çağır stty -aözel karakterler ve diğer "Terminal hattı ayarları" güncel değerlerini görmek için. Aşağıdaki örneklerde, bunu görebilirsiniz introlduğunu Ctrl+ C, eofolan Ctrl+ D, suspolduğu Ctrl+ Z. (Yalnızca özel karakter ayarlarını göstermek için diğer çıktıları sildim):

stty -a GNU / Linux'ta özel karakter:

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'deki özel karakterler:

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;

Örneğin, özel bir karakterin değerini değiştirmek için gelen kesme karakterini değiştirmek için Ctrl+ Ciçin Ctrl+ EInvoke sttyböyle ( ^Ekelimenin tam anlamıyla iki karakter, inceltme (olan ^harfi takiben) E):

stty intr '^E'

Daha fazla bilgi için sttyve sayfalarına bakınız termios. GNU / Linux'ta tty_ioctlkılavuz sayfasına da bakabilirsiniz .

Notlar:

intrTuşu ( Ctrl+ Cvarsayılan), aslında süreci öldürmek, ancak (bir kesme sinyali göndermek için çekirdek yol açmaması SIGINTsüreç grubundaki tüm süreçlere). İşlemler sinyali yakalamayı veya yoksaymayı ayarlayabilir, ancak çoğu işlem varsayılan davranış olan sonlandırılır.

Bu nedenle Ctrl+ dterminali hat sürücüsü kabuğun standart girişine EOF (end of file) gönderdiği için dışarı kaydeder olduğunu. Kabuk, standart girdisinde dosya sonu aldığında çıkar.


@Sukminder, FreeBSD'de POSIX -aseçeneğine eklendi stty.
RobertL

Ben denedim stty intr '^E'(ayarlar) ama geçici olarak ve sadece mevcut terminal / tty için denedim . Küresel ve kalıcı olarak nasıl değiştirebilirim?
Pandya

En iyi yol stty$ HOME / .profile veya $ HOME / .bashrc veya başka bir kabuk başlangıç ​​başlatma dosyasında çağırmak olacağını düşünüyorum .
RobertL

Denedim: terminal ile çalışıyor ama etkisi yoktty
Pandya

Ne denedin, ne görüyorsun ve ne demek istiyorsun tty? Belki bu yeni bir soru olabilir?
RobertL

15

Gönderen http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/

Komut Düzenleme Kısayolları

  • Ctrl+ a- komut satırının başına git
  • Ctrl+ e- komut satırının sonuna git
  • Ctrl+ k- imleçten komut satırının sonuna kadar sil
  • Ctrl+ u- imleçten komut satırının başına kadar sil
  • Ctrl+ w- imleçten sözcüğün başına kadar sil (yani bir kelimeyi geriye doğru sil)
  • Ctrl+ y- imleçten sonra silme kısayollarından biri (yukarıdaki gibi) kullanılarak kesilmiş sözcük veya metni yapıştırın
  • Ctrl+ xx- komut satırının başlangıcı ile geçerli imleç konumu arasında geçiş (ve tekrar geri)
  • Alt+ b- bir kelime geri git (veya imlecin üzerinde bulunduğu kelimenin başına git)
  • Alt+ f- bir kelime ileri git (veya imlecin üzerinde bulunduğu kelimenin sonuna git)
  • Alt+ d- imleçten başlayarak sözcüğün sonuna kadar sil (imleç sözcüğün başındaysa tam kelime)
  • Alt+ c- imleçten başlayarak sözcüğün sonuna kadar büyük harf kullan (imleç sözcüğün başındaysa tam kelime)
  • Alt+ u- imleçten kelimenin sonuna kadar büyük harf yap
  • Alt+ l- imleçten kelimenin sonuna kadar küçük harf yap
  • Alt+ t- geçerli kelimeyi öncekiyle değiştir
  • Ctrl+ f- bir karakter ileri git
  • Ctrl+ b- bir karakter geri git
  • Ctrl+ d- imlecin altındaki karakteri sil
  • Ctrl+ h- imleçten önceki karakteri sil
  • Ctrl+ t- imleç altındaki karakteri öncekiyle değiştir

Komut Geri Çağırma Kısayolları

  • Ctrl+ r- geçmişi geriye doğru ara
  • Ctrl+ g- geçmiş arama modundan kaç
  • Ctrl+ p- geçmişte önceki komut (yani komut geçmişinde geriye doğru gitme)
  • Ctrl+ n- geçmişte bir sonraki komut (yani komut geçmişinde ileriye doğru yürü
  • Alt+ .- önceki komutun son sözcüğünü kullan

Komut Kontrol Kısayolları

  • Ctrl+ l- ekranı temizle
  • Ctrl+ s- ekrana çıkışı durdurur (uzun süre çalışan ayrıntılı komut için)
  • Ctrl+ q- ekrana çıkış yapılmasına izin ver (önceden yukarıdaki komut kullanılarak durdurulmuşsa)
  • Ctrl+ c- komutu sonlandır
  • Ctrl+ z- komutu askıya al / durdur

Bash Bang (!) Komutları

Bash ayrıca bazı kullanışlı özelliklere sahiptir! bash komutlarıyla bazı korkak şeyler yapmanıza izin vermek için .

  • !! - son komutu çalıştır
  • ! blah - 'blah' ile başlayan en son komutu çalıştır (örneğin! ls)
  • ! blah: p - ! blah'ın çalışacağı komutu yazdırın (ayrıca komut geçmişindeki en son komut olarak ekler)
  • ! $ - önceki komutun son sözcüğü ( Alt + ile aynı ).
  • ! $: p - ! $ 'ın yerine geçeceği kelimeyi yazdırın
  • ! * - son kelime hariç önceki komut (örneğin, ' find some_file.txt / ' yazarsanız ,! * Size ' find some_file.txt ' yazar)
  • *!: p - Ne çıktısını ! * yerine ediyorum

1
@Sukminder No, Ctrl + S çıkışı durdurur. Ctrl + Z ile karıştırıyorsunuz.
Gilles 'SO- kötü olmayı kes'

Ayrıca bakınız: Emacs.
Erich

Güzel! Ve ulaşmak için bir yol var ^Uki stty -agösteriler bash, Linux üzerinde SIGKILL için tanımlanan? Tercihen, okuma satırı öğelerini tanımlamaksızın (belki de üçüncü bir mod / meta anahtarı aracılığıyla). Ben sadece ctrl + u readline bağlama tarafından gölgeli varsayalım?
nyov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.