Я знаю, что наличие & в конце команды заставляет ее работать в фоновом режиме. Мне было интересно, что означает &Number ? Я искал сценарий, в котором некоторые команды работают с &1 а некоторые с &2 .
4 ответа
Это следует перенести в SuperUser, но ответ заключается в том, что они ссылаются на дескрипторы файлов. & 1 - это стандартный вывод, а & 2 - стандартная ошибка, поэтому программа запускается так:
./program 2>&1
Перенаправляет дескриптор 2 (стандартная ошибка) на дескриптор 1 (стандартный вывод)
Обычное использование это сделать что-то вроде этого:
./program >file.txt 2>&1
Который перенаправляет стандартный вывод в файл, а затем стандартную ошибку в стандартный вывод, так что вы получаете как обычный, так и вывод ошибок, зафиксированный в файле.
Для оболочек типа Bourne (bash и т.д.)
mycmd > /output/file 2>&1
объединяет стандартный вывод ошибок (дескриптор файла 2) со стандартным выводом (дескриптор файла 1) и записывает их оба в /output/file .
Символ & указывает файловый дескриптор. & 1 - это стандартный вывод, а & 2 - это стандартный вывод.
Если вы еще не нашли хороший сайт для изучения сценариев оболочки, я рекомендую этот:
&1 - стандартный вывод (STD_OUT), &2 - стандартный поток ошибок (STD_ERR)
