Рейтинг:0

в чем разница между «command.sh > /dev/null 2>&1» и «command.sh 2>&1 >/dev/null»

флаг us

У меня есть много сценариев оболочки и Python в моем crontab, которые заканчиваются либо на:

command.sh > /dev/null 2>&1

или же

command.sh 2>&1 >/dev/null

Я знаю это:

> для перенаправления

/dev/ноль это черная дыра, в которой любые отправленные данные будут отброшены

2 дескриптор файла для стандартной ошибки

> для перенаправления

& - это символ дескриптора файла (без него следующий 1 будет считаться именем файла)

1 дескриптор файла для стандартного вывода

Следовательно command.sh >/dev/null 2>&1 перенаправляет вывод моей программы в /dev/null. Включите как стандартную ошибку, так и стандартный выход.

оба имеют одинаковый результат и работают нормально, но почему некоторые используют первый тип, а некоторые — другой?

Рейтинг:1
флаг ng

Команды выполняют два перенаправления:

  • > /dev/ноль перенаправляет стандартный вывод на /dev/ноль
  • 2>&1 перенаправляет стандартную ошибку на стандартный вывод

Как вы правильно догадались, глобальный эффект заключается в том, что и стандартный вывод, и стандартная ошибка перенаправляются на /dev/ноль.

Оба перенаправления предназначены для интерпретации оболочкой, а не реальной вызываемой программой; поэтому они добавляются в конец командной строки. Они логически различны, хотя их эффекты суммируются; таким образом, они могут быть указаны в любом порядке, который вы предпочитаете.

TL;DR: две команды полностью эквивалентны, разница чисто косметическая.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.