Я знаю, что наличие &
в конце команды заставляет ее работать в фоновом режиме. Мне было интересно, что означает &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
)