Что означает команда bash?

Не могу понять, что означает команда:

python script.py 1>${workspace_dir}/output1.txt 2>${workspace_dir}/output2.txt   

После python script.py идут 2 аргумента или что это? А если так, то что они делают. Поясните.


Ответы (2 шт):

Автор решения: jeldora

Как я понял, идет перенаправление из 1 файлового дискриптора (стандартный вывод) в файл output1.txt, который находиться по пути, который определяет переменная окружения workspace_dir. Т.е. все, что выведет скрипт, пойдет в этот файл. Во втором аргументе почти тоже самое, но подменяется дискриптор стандартного вывода ошибок (stderr). Т.е., если в скрипте произойдет ошибка, то вывод о ней направиться в этот файл.

→ Ссылка
Автор решения: aleksandr barakin

это описанное в стандарте posix перенаправление вывода. его общий синтаксис:

команда [n]>файл

где n — это номер файлового дескриптора процесса, в котором выполняется команда.

если номер опущен, то подразумевается 1 (стандартный дескриптор вывода — stdout). эти две конструкции идентичны:

команда 1>файл
команда >файл

дескриптор номер 2 — это стандартный дескриптор вывода ошибок — stderr.

одна команда может сопровождаться несколькими перенаправлениями:

команда >файл1 2>файл2 3>файл3 ...
  • в файл1 будет записано то, что процесс выдал в stdout (дескриптор номер 1)
  • в файл2 будет записано то, что процесс выдал в stderr (дескриптор номер 2)
  • в файл3 будет записано то, что процесс выдал в дескриптор номер 3
  • и т.д.

существуют и другие синтаксические конструкции перенаправления вывода: >|, >>. чтобы не загромождать ответ, отсылаю к документации, ссылка на которую приведена в самом начале ответа.

→ Ссылка