CTRL + C olduğunda ^ C'yi kaldır


25

Red Hat Enterprise Linux 6 ("Santiago") içeren kabukta + ^Ctuşuna bastığınızda kaldırmanın bir yolu var mı ? Kendiminkini düzenleme iznim var .CTRLC.bash_profile


4
deneyinset echo-control-characters off
Sundeep

1
Denedim ama işe yaramadı
Fede Gold

Yanıtlar:


29

~/.inputrcDosyanızı düzenleyin (veya oluşturun) . Bir çizgi ekleyerek

set echo-control-characters Off

Bu, GNU Readline kütüphanesine (Bash'in kullandığı) ekrana herhangi bir kontrol karakterinin çıkmaması (echo) talimatını verir. Bu ayar bundan sonra tüm yeni Bash oturumlarında etkin olacaktır (ve Readline kütüphanesini kullanan herhangi bir yardımcı programda).

O Bildirimi eğer Unix sistem (genellikle Readline kütüphanesi için bir sistem genelinde yapılandırma dosyası ile gelir /etc/inputrc), ardından kişisel yapılandırma dosyası bu dosyayı dahil etmek gerekir:

$include /etc/inputrc
set echo-control-characters Off

Diğer bir alternatif, sistem genelinde yapılandırma dosyasının kişisel bir kopyasını çıkarmak ve sonra bunu değiştirmektir.


Merhaba, bunu ve iyi çalıştığını test ettim ama çalışan bir bash komutunu böldüğümde işe yaramadı, örneğin sleep 180ve CTRL + C
rɑːdʒɑ

@ Ten-Coin Sadece komut maalesef Readline kütüphanesini kullanıyorsa işe yarar.
Kusalananda

1
Eğer ~/.inputrczaten o yok sadece dosyası oluşturma bazı mevcut ayarları kaybedebilirsiniz. Benim durumumda ilk önce ctrl + left ve ctrl + right'in çalışmayı bıraktığını fark ettim. Düzeltme benim ~/.inputrcbu çizgiyle başlamaktı $include /etc/inputrc. cp /etc/inputrc .inputrcİstediğiniz gibi adil ve düzenlemek de mümkündür .
kasperd

2
@ kasperd İyi nokta! Kişisel bir yapılandırma dosyası eklemenin sistem genelinde bir yapılandırma dosyasının okunmasını engelleyeceğini bilmiyordum (sistemimde bir tane yok). Cevabımı güncelleyeceğim.
Kusalananda

20

Takip etmeyi dene:

stty -echoctl

Bir açıklama için Stéphane Chazelas'tan bu harika ve ayrıntılı yazıya bakınız. , diğer bazı sttyözellikleri de açıklayan .

Eğer bu değişikliği kalıcı kılmak istiyorsanız (ve sorunuzda belirtildiği şekilde kullanıyorsunuz ), yorumlarda jlmg tarafından belirtildiği gibi bashkoymak en iyisidir (bu nedenle tüm etkileşimli mermiler için geçerlidir)..bashrc


+1 Readline çözümünün aksine, terminalde çalışan her şey olmasa da, bunun çoğu için çalışması gerekir.
JoL

1
Muhtemelen .bash_profilebu dosya sadece oturum açma kabukları tarafından ayrıştırıldığında , tüm terminallerde çalışmayacağından bahsetmelidir . Bunun .bashrcyerine konulmalıdır , bu nedenle tüm etkileşimli çağrılar tarafından okunur.
JoL

1
Bu hala bazı terminaller tarafından teorik olarak yorumlanabilecek ham 0x03 baytını yankılamayacak mı? Ayrıca, ^[[A
salt okunur

1
@ Random832 +1 Haklısın. Sanırım bu ayarın adı kötü; kontrol karakterlerinin yankılanmasını kontrol etmiyor, yankılanmadan önce basılabilir karakterlere çevirilerini denetliyor. Bu yan etkiyi önlemek için, sen de yapmalısın stty -echo. Tabii ki, diğer her şeyin yankılanmasını da önleyecektir, ki eğer tek istediğin şeyi saklamak olsaydı, muhtemelen bu cevabı hayırlı kılar ^C.
JoL

1
@jlmg Her ^Czaman sonunda olsaydı, sana katılabilirim . Ancak, ^Cimlecin bulunduğu yerde, komutun herhangi bir yerinde bulunan bir çift karakterin üzerine yazılabilir. Bu, o komutun parçalarını kopyala yapıştırmanız gerekirse, karışık bir şeyle sonuçlanabileceği anlamına gelir. Ve ^Cterminale bakarken komutun sonunda olmuş gibi olduğu kadar kolay tanınmaz.
kasperd

2

Normal yankıya izin verecek bir yapılandırma bulmaya çalışıyorsanız (dahil echoctl ) ve sadece sinyal oluşturucu karakterlerin yankısını susturmaya ve bunun mümkün olacağından eminiz çünkü daha önce böyle çalıştığını gördünüz ...

Muhtemelen bu şekilde gördün. Ancak bu taahhüt nedeniyle artık mümkün değil :

ec5b1157f8e819c72fc93aa6d2d5117c08cdc961 işleme

N_TTY disiplininde INTR / QUIT / SUSP yankılarını açın (örn. Stty echoctl ayarlanmış ve ctrl-C INTR olarak ayarlanmışsa ctrl-C "^ C" olarak görünecektir).

Linux gibi görünüyor sadece Unix benzeri işletim sistemi (geçenlerde Solaris, BSD ve Mac OS X üzerinde bu doğrulandıktan) bunu yapmaz değil , bu şekilde davranmaz ve gerçekten bir program interruptları iyi görsel onay olarak bu kaçırma Konsolda veya xterm'de. Bunu merakla yıllar boyunca kullandığım birçok Unix'ten hatırlıyorum. Bunu Linux'a getirmek, standart unix benzeri davranışlarla daha uyumlu hale getirmek için iyi bir yol gibi görünüyor.

Linux kullanılan severek nasıl Hatırlarsanız için değil o yankı ^C, eski davranış geri almak için tek yol çekirdeğe yama etmektir. Son versiyonlarda, sinyal üreten karakterlerin yankıları / tty / n_tty.c sürücülerinin 1215-1218 satırlarındadır .

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.