Что означает команда bash?
Не могу понять, что означает команда:
python script.py 1>${workspace_dir}/output1.txt 2>${workspace_dir}/output2.txt
После python script.py идут 2 аргумента или что это? А если так, то что они делают. Поясните.
Ответы (2 шт):
Как я понял, идет перенаправление из 1 файлового дискриптора (стандартный вывод) в файл output1.txt, который находиться по пути, который определяет переменная окружения workspace_dir. Т.е. все, что выведет скрипт, пойдет в этот файл. Во втором аргументе почти тоже самое, но подменяется дискриптор стандартного вывода ошибок (stderr). Т.е., если в скрипте произойдет ошибка, то вывод о ней направиться в этот файл.
это описанное в стандарте posix перенаправление вывода. его общий синтаксис:
команда [n]>файл
где n — это номер файлового дескриптора процесса, в котором выполняется команда.
если номер опущен, то подразумевается 1 (стандартный дескриптор вывода — stdout). эти две конструкции идентичны:
команда 1>файл
команда >файл
дескриптор номер 2 — это стандартный дескриптор вывода ошибок — stderr.
одна команда может сопровождаться несколькими перенаправлениями:
команда >файл1 2>файл2 3>файл3 ...
- в
файл1будет записано то, что процесс выдал вstdout(дескриптор номер1) - в
файл2будет записано то, что процесс выдал вstderr(дескриптор номер2) - в
файл3будет записано то, что процесс выдал в дескриптор номер3 - и т.д.
существуют и другие синтаксические конструкции перенаправления вывода: >|, >>. чтобы не загромождать ответ, отсылаю к документации, ссылка на которую приведена в самом начале ответа.