Я использую эту форму для перенаправления стандартного вывода и стандартной ошибки в один и тот же файл.
ls -ld . fred > no_fred 2>&1
Только что протестировано в оболочке Korn Red Hat Linux 4. no_fred содержит:
ls: fred: No such file or directory
drwxrwxr-x 2 user group 1024 Apr 27 17:41 .
">" на самом деле равно 1>, что говорит о перенаправлении дескриптора файла 1 (стандартный вывод). «2>» перенаправляет стандартную ошибку, поскольку стандартной ошибкой является дескриптор файла 2. «& 1» означает «что бы вы ни делали с дескриптором файла 1». Таким образом, все вместе это означает «сбросить стандартный вывод в файл и стандартную ошибку вместе с ним».
Одним из преимуществ этого метода является то, что сообщения об ошибках появляются в нужном месте. Например, сообщения об ошибках компилятора для файла, который не удалось скомпилировать, появятся сразу после команды компиляции из вашего make-файла.
Конструкция >> & может добавить вывод команды в файл журнала и поместить его в фоновый режим. Я не уверен, что это что-то делает со стандартной ошибкой. Я только что проконсультировался с Bolsky / Korn 1989 года, и его там даже нет, так что, возможно, кто-то еще сможет разобрать, что он делает.
Обновление: Если в вашей команде есть какие-либо каналы, то стандарт
Ошибка ранних стадий будет появляться первой, как команда, производящая ошибку
пробеги. Поскольку только стандартный вывод направляется через канал, он будет
все появляются сразу после завершения всего конвейера.