Привет, всем, ага. С утра разминочка, а ближе к обеду про более серьезные вещи поговорим.
Наверняка ты знаешь, что при нажатии сочетания клавиш CTRL+D завершится текущая интерактивная оболочка. То есть если ты сидишь на сервере по ssh и нажал CTRL+D, сессия прервется. ОК.
При нажатии такого сочетания, оболочка при чтении устройства терминала получит признак конца файла и завершится если строка пуста. Нюанс, если в командной строке набрать какие-то символы и нажать CTRL+D, то ничего не произойдет.
Как еще можно завершить сессию с командной оболочкой? Ну например установить значение переменной TMOUT больше нуля. Цифра будет означать секунды.
Следующий вариант это активировать параметр оболочки «t» с помощью команды set.
Так. Еще есть вариант с параметром «e». Указав его оболочка завершает работу после возникновения ошибки. Например:
Более человеческий пример:
Что еще упустили… Упустили команду exec. Подвешиваем на стандартный ввод устройство /dev/null.
Ааа, еще же exit есть. Не буду его обижать, пусть тоже в этом посте присутствует.
Ну и как обычно, на закуску.
stty (Set Teletype) - Эта команда управляет настройками терминала и позволяет пользователю вносить изменения в терминал и отображать его характеристики.
Всё, стоп! После обеда покажу, как с помощью strace можно инжектить в системные вызовы процессов для отладки некоторых ёбнутых случаев. Увидимся!
tags: #bash #linux
—
💩 @bashdays
Наверняка ты знаешь, что при нажатии сочетания клавиш CTRL+D завершится текущая интерактивная оболочка. То есть если ты сидишь на сервере по ssh и нажал CTRL+D, сессия прервется. ОК.
При нажатии такого сочетания, оболочка при чтении устройства терминала получит признак конца файла и завершится если строка пуста. Нюанс, если в командной строке набрать какие-то символы и нажать CTRL+D, то ничего не произойдет.
Как еще можно завершить сессию с командной оболочкой? Ну например установить значение переменной TMOUT больше нуля. Цифра будет означать секунды.
# TMOUT=5Текущая сессия закроется через 5 секунд.
Следующий вариант это активировать параметр оболочки «t» с помощью команды set.
set -tВыбросило! НО! Оболочка прекратит свою работу, только после того, как завершится работа запущенных команд в текущий строке. Например:
set -t ; readВыход произойдет, только после нажатия клавиши Enter. А в примере ниже:
set -t ; read -t3Выход будет произведен после нажатия Enter ИЛИ по прошествию 3х секунд.
Так. Еще есть вариант с параметром «e». Указав его оболочка завершает работу после возникновения ошибки. Например:
set -e ; falseКоманда false ничего не делает, но завершается всегда с ошибкой. Как правило, используется при написании bash скриптов.
Более человеческий пример:
set -e ; ПаравозблятьИ снова выкинуло. Потому что вернулась ошибка - Паравозблять: command not found.
Что еще упустили… Упустили команду exec. Подвешиваем на стандартный ввод устройство /dev/null.
exec </dev/nullПри чтении этого устройства оболочка получит признак конца файла и успешно завершится.
Ааа, еще же exit есть. Не буду его обижать, пусть тоже в этом посте присутствует.
Ну и как обычно, на закуску.
stty eof $'\t'Ёпта, что это? Это хак. После выполнения этой команды у тебя появится возможность закрыть текущую оболочку по нажатию на клавишу TAB. Ввод символа табуляции, посылает сигнал конца файла и оболочка прекращает свою работу.
stty (Set Teletype) - Эта команда управляет настройками терминала и позволяет пользователю вносить изменения в терминал и отображать его характеристики.
Всё, стоп! После обеда покажу, как с помощью strace можно инжектить в системные вызовы процессов для отладки некоторых ёбнутых случаев. Увидимся!
tags: #bash #linux
—