/dev/null - это специальное устройство в linux, которое принимает любые данные и просто их выбрасывает. Часто используется, когда нужно убрать лишний вывод команд.
▪️ Отключаем stdout. Если команда выводит много информации:
ls /tmp > /dev/null
Теперь stdout (fd 1) будет игнорироваться.
▪️ Отключаем только ошибки. Если нужно скрыть stderr (fd 2):
ls /no/such/file 2> /dev/null
Ошибки исчезнут, но нормальный вывод останется.
▪️ Полное подавление вывода. Иногда нужно убрать все:
command > /dev/null 2>&1
Что происходит:
stdout в /dev/null и stderr туда же
▪️ Пример:
curl -s https://bashtex.com > /dev/null 2>&1
Команда выполняется тихо.
▪️ Проверка команды без мусора. Полезный паттерн:
command -v docker > /dev/null 2>&1
Проверяем наличие команды:
if command -v docker > /dev/null 2>&1; then
echo "Docker установлен"
fi
🤩 Частая ошибка. Некоторые пишут:
command 2>&1 > /dev/null
Это не то же самое. Правильный порядок:
command > /dev/null 2>&1
Потому что редиректы выполняются слева направо.
▪️ Практические кейсы. Проверка файла
test -f file.txt > /dev/null 2>&1
Проверка сервиса
systemctl is-active nginx > /dev/null
Проверка сети
ping -c1 google.com > /dev/null 2>&1
BashTex 📱 #bash #utils