Ёхохо. Не пить алкашку по выходным конечно круто, по итогу все это время компенсируешь работой. Продуктивность зашкаливает. НО, скучно пиздец!

Источник: оригинал в Telegram

Поэтому приходится отвлекаться игрульками. Гоняя Зельду, невольно задумался, а квесты-то очень похожи на алгоритмы в программировании. Порой аж жопа горит. И их можно давать на собеседованиях. Без знания паттернов хер чо пройдёшь.

Ладно, теперь по теме — реврайтим CTRL+C.

Как прерывать запущенные программы и скрипты тут каждый знает. А как работает изнутри CTRL+C я напишу в следующих постах.

Сегодня что-то вроде на изи потыкать. Понедельник как-никак.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Где применяется реврайт CTRL+C? Да практически нигде, но то, что его можно зареврайтить это факт.

А вообще причины для реврайта разные:

  • Избежание конфликтов с программным обеспечением
  • Удобство и предпочтения пользователя
  • Специальные рабочие процессы
  • Случайные нажатия
  • Ограниченные возможности клавиатуры
  • и т.п.

Давай теперь на практике.

Смотрим дефолтное сочетание

stty -a

Получаем портянку вида:

speed 38400 baud; rows 57; columns 237; 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

Смотрим параметр intr, он и указывает на сочетание, которое будет слать SIGINT. По умолчанию как видим оно = CTRL+C.

Давай теперь поменяем эту штуку:

stty intr ^K

Теперь запускаем для теста sleep 1000 и пробуем нажать CTRL+C. Опа и нихуя не происходит.

Поздравляю, реврайт прошёл успешно. А теперь нажми CTRL+K и sleep завершится. Клёва? Клёва!

Можешь теперь издеваться над коллегами и ломать им рабочие процессы.

Чтобы сохранить эти настройки, выполняем:

echo 'stty intr ^K' >> ~/.bashrc

Ну либо в .zshrc, тут уже сам смотри, где у тебя первоначальные настройки валяются.

А можно сделать CTRL+ALT+K ?

Через stty, увы, такое провернуть не получится.

Но используя xbindkeys такое возможно.

vim ~/.xbindkeysrc

И добавить туда:

"pkill -SIGINT -f ."
  Control+Alt + k

Но xbindkeys со своими подводными камнями, оно для Иксов. А если у тебя Wayland, то смотри в сторону sway или gnome-keybinding.

Такие дела. Ладно, пошли дальше мир спасать. Хорошего понедельника!