Linux terminalinde tam olarak Ctrl + x nedir?
(tl; dr: uzun araştırma. soruları en sonunda sıralayın.)
Sadece super+ bazı harflere bastığımda (örn. Command + n veya windowsKey + a, vb.), Ana bilgisayar dosyamın garip bir biçimde bir listesini ve iki harfli yeni bir satır aldığımı fark ettim .
Örneğin:
user@host $ <here i press Super+n> ::1 localhost test.com test2.com test3.com user@host $sn
metin düzenleyicimi başlatır ve aynı tuşlara basarsam, şunu görürüm: @snve başka bir şey yok.
$ hexdump x
0000000 7340 0a6e
0000004
bu doğru görünmüyor, çünkü bu tuş kombinasyonunun gönderdiği şey bu olsaydı hiçbir şey olmazdı. Yani eksik bilgi olmalı. Başka bir şey deneyelim
$ cat `tty` | hexdump
^X@sn
0000000 4018 6e73 000a
0000005
Tahmin edeceğim, 000ayeni bir satıra girmem ve tty'den ayrılmak ve yeniden yönlendirmenin onaltılık döküm olmasına izin vermek için ctrl + D tuşlarına basmamın sonucudur. Öyleyse bunu görmezden gelelim.
Geriye kalan onaltılık değerlerle kaldım, bu doğru sırada olacak:
18: CAN cancel
40: @
73: s
6E: n
CAN karakterinin ne yaptığını bulamadım. listelenmemişstty -a
$ stty -a
speed 38400 baud; rows 33; columns 151; line = 0;
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; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Hiçbir yer yok ^X. Ama catharitasının böyle olduğunu göstermek güzeldi , aksi takdirde çok kaybolmuş olurdum.
İptal kontrol karakterindeki Wikipedia, neler olduğunu açıklamıyor. Ancak ^Xeşlemeyi doğrular .
Artık CAN'ın olduğunu bildiğimize göre ^X, şunu yazabilirim: ^X(terminali garip, yankısız bir durumda bırakır, START'a çok benzer, stty doğru gösterir ^Q) ve ardından tuşuna basmak @öncekiyle aynı ana bilgisayar listesini gösterir!
Tamam, ^Xterminal dışında bir şeyin özelliği de olabilir. Bu Bash'i bırakır. Bu da beni bu cevaba götürdü (ironik bir şekilde wikipedia'dan silinmiş bilgilere işaret ediyor ve seçilen cevap bu değil). Bash kılavuzu gösterir ^X(gösterimi ile C-x), yerde tüm kullanılır:
C-x @olası ana bilgisayar adı tamamlamaları için kullanılır (Cx @)
İptal Kontrol Karakteri ile ilgisi yoktur, ancak sttybu karakterin ^ X olduğunu bilmiyorsanız, eşleme ne yapar? yani, ^V ^Xyazarsam char 0x18 alırım.
Böylece tüm bu araştırma bende birkaç soruyla baş başa kalıyor:
Uçbirimi Control+ x= iptal karakterinin (ascii 0x18) eşlemesinden ne sorumludur ? neden listelenmemiş
stty -a? Amacatbunu biliyor, nasıl? Neden ile Karakter İptal Yazabilirim^V ^X?neden süper + bazı harflere basmak + harfle sonuçlanır
^X@s? (bu yalnızca KDE'nin konsolunda olan tek bölümdür, geri kalan her şey de xterm üzerinde çalışır. Herhangi bir yerde yapılandırılmış özel bir kısayol tuşum yok) (düzenleme: burada daha ayrıntılı kendi soru )
Yanıtlar
Dediğiniz gibi, C-x @olası ana bilgisayar adı tamamlamaları için kullanılır. Bunu sağladığınız bash kılavuz bağlantısında ararsanız, "Readline Türünün Sizin İçin İzin Verilmesi" bölümündedir.
Readline , satır düzenlemeye ve sekme tamamlama gibi diğer şeylere izin veren bir kitaplıktır. Bash'de ama diğer programlarda da kullanılıyor.
Bu nedenle, bash için belirli bir yapılandırmayla, bash içindeki readline, ana bilgisayarların listesini göstermekten sorumludur. Bunun, sttyreadline kitaplığından çok önce gelen bir unix bölümündeki tty ayarlarının bir parçası olan hiçbir ilgisi yoktur .
Tty ayarlarının yorumlanması, readline herhangi birini görmeden çok önce gerçekleşir.
cat bunların hiçbirini "bilmiyor".
Neden Superdiğer anahtarlarla birlikte bu diziyi oluşturduğuna gelince : Benim sistemimde yapmıyor ve sizin sisteminizde neden olduğu hakkında hiçbir fikrim yok. İlk bakacağım yer terminal emülatörünüz (hangisini kullandığınızı söylemediniz, ben kullanıyorum xterm). İkincisi, masaüstü yöneticiniz / pencere yöneticinizdir.