Почему кто-то использует дескрипторы с /dev/null?

Если требуется закрыть соединение SSH после периода бездействия, сами оболочки предоставляют переменные тайм-аута.

Для удара:

TMOUT: If set to a value greater than zero, TMOUT is treated as the default timeout for the read builtin. The select command terminates if input does not arrive after TMOUT seconds when input is coming from a terminal. In an interactive shell, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if input does not arrive.

проверьте это, запустив TMOUT=10и подождите 10 секунд, чтобы закрыть соединение.

Для тсш:

The autologout shell variable can be set to log out or lock the shell after a given number of minutes of inactivity.

В tcsh синтаксис для установки времени ожидания на десять минут set autologout=10. Это не работает в оригинальном csh.

-1
28.04.2021, 12:04
1 ответ

Иногда вы просто не хотите видеть вывод. Многие инструменты выводят множество «бесполезных» данных на stdout или stderr, и иногда мы просто хотим игнорировать их, и если инструмент не поддерживает что-то вроде -q/--quite, перенаправление вывода на /dev/nullделает свою работу. Если основной функцией инструмента является не печать чего-либо, вас может интересовать только успешное или неудачное выполнение, и для этого вы будете использовать код возврата (, особенно в сценариях ).

Примером может быть попытка выяснить, установлено ли средство. Возможно, вы захотите проверить что-то вроде tool --versionили which tool, но на самом деле вас не интересует версия или путь к инструменту, вас интересует только, доступен он или нет, и для этого достаточно кода возврата. Например, в скрипте, где вы хотите проверить наличие у пользователя всех необходимых зависимостей

$ which xyz >/dev/null 2>&1 || echo "you need to install xyz to proceed"
you need to install xyz to proceed

выглядит лучше, чем

$ which xyz || echo "you need to install xyz to proceed"
/usr/bin/which: no xyz in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/vtrefny/.local/bin:/home/vtrefny/bin)
you need to install xyz to proceed
2
28.04.2021, 22:51

Теги

Похожие вопросы