Mówię o skrótach klawiaturowych używanych w wierszu poleceń / terminalu.
Przykład: Ctrl+, cktóry zabija proces, Ctrl+ dto wylogowanie, Ctrl+ zktóry wysyła proces do tła ... itd.
Przetestowałem kilka i stwierdzili, że nie są one ani terminalu (czyli gnome-terminal
, xterm
, konsole
) specyficzne ani powłoki (np bash
, zsh
) specyficzny, nawet praca na tty
s.
Więc chcę wiedzieć:
- Kto udostępnia te skróty?
- Jak mogę je wymienić i zmodyfikować / zdefiniować?
bind -p
wymienić, tak jak whelp bind
przypadku innychOdpowiedzi:
Sterownik terminala jądra (
termios
) interpretuje specjalne klucze, które można wpisać, aby wysłać sygnał do procesu, wysłać koniec pliku, usunąć znaki itp. Jest to podstawowa funkcjonalność jądra systemu Unix i bardzo podobna w większości implementacji systemów Unix i Linux.Na
stty
polecenie wyświetla lub ustawiatermios
znaki specjalne, a także inne parametry dla terminala sterownika linii.Wywołaj,
stty -a
aby zobaczyć bieżące wartości znaków specjalnych i inne „ustawienia linii terminala”. W poniższych przykładach widać, żeintr
to Ctrl+ C,eof
to Ctrl+ D,susp
to Ctrl+ Z. (Usunąłem inne dane wyjściowe, aby wyświetlić tylko ustawienia znaków specjalnych):stty -a
znaki specjalne w GNU / Linux:stty -a
znaki specjalne w FreeBSD:Aby zmienić wartość znaku specjalnego, na przykład aby zmienić znak przerwania z Ctrl+ Cna Ctrl+ Ewywołaj w
stty
ten sposób (^E
to dosłownie dwa znaki, circumflex (^
), po którym następuje literaE
):Aby uzyskać więcej informacji, zobacz strony podręcznika dla
stty
itermios
. W systemie GNU / Linux możesz także spojrzeć natty_ioctl
stronę podręcznika .Uwagi:
intr
Klawisz ( Ctrl+ Cdomyślnie), faktycznie nie zabić proces, ale powoduje, że jądro wysłać sygnał przerwania (SIGINT
) do wszystkich procesów w grupie procesowej. Procesy mogą zorganizować przechwytywanie lub ignorowanie sygnału, ale większość procesów zostanie zakończona, co jest zachowaniem domyślnym.Powodem, dla którego Ctrl+ się dwylogowuje, jest to, że sterownik linii terminala wysyła EOF (koniec pliku) na standardowe wejście powłoki. Powłoka kończy działanie, gdy odbiera koniec pliku na swoim standardowym wejściu.
źródło
-a
dodano opcję POSIXstty
.stty intr '^E'
to działa (zestawy), ale tymczasowo i tylko dla bieżącego terminalu / tty. Jak mogę to zmienić globalnie i na stałe?stty
w $ HOME / .profile lub $ HOME / .bashrc lub innym pliku inicjującym uruchomienie powłoki.tty
tty
? Może to może być nowe pytanie?From http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
Skróty do edycji poleceń
Skróty przywoływania poleceń
Skróty kontroli poleceń
Polecenia Bash Bang (!)
Bash ma również kilka przydatnych funkcji, które wykorzystują! (huk), aby umożliwić ci wykonywanie funky z poleceniami bash .
źródło
^U
, którestty -a
pokazuje zdefiniowane dla SIGKILL na Linuksie, z basha? Najlepiej bez definiowania elementów readline (być może za pomocą trzeciego klawisza mod / meta). Zakładam, że jest to cień tylko przez powiązanie readline ctrl + u?