Можно ли написать псевдоним или функцию в Bash для фильтрации ошибок (stderr)?

простой способ поиска разделов, дисков и файловых систем

lsblk -f
1
23.02.2020, 11:43
1 ответ

Функция оболочки, которая выполняет команду, заданную в качестве одного или нескольких аргументов, и отбрасывает стандартный поток ошибок:

discarderr () {
    "$@" 2>/dev/null
}

Псевдоним, который делает то же самое:

alias discarderr='2>/dev/null'

Оба будут использоваться одинаково:

discarderr some-command

... хотя это, возможно, запутывает команду и в долгосрочной перспективе более громоздко, чем просто добавление 2>/dev/nullк команде. Вам, например, нужно помнить о создании экземпляра псевдонима или функции в каждой системе, которую вы используете, и если вы используете функцию в сценарии, это скрывает тот факт, что вы отбрасываете диагностические сообщения от кого-то, кто просматривает код.

Кроме того, диагностические сообщения полезны , и в идеале вам следует исправлять такие вещи, как мертвые символические ссылки и т. д., а не устранять тот факт, что они вызывают ошибки в программах, пытающихся получить доступ к данным через них.

Также обратите внимание, что использование discarderrусложнит отладку "странных" проблем. Вы не можете, например, увидеть, была ли вообще выполнена команда , как, например.discarderr grap(grepс ошибкой )ничего не выводит.

3
28.04.2021, 23:22

Теги

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