Существуют 3 файловых дескриптора: stdin - cтандартный ввод, stdout - стандартный вывод и stderr - стандартный поток ошибок.
Ваши основные возможности:
Небольшое примечание для более глубокого понимания: с помощью команды less Вы можете просмотреть как stdout, который остаётся в буфере, так и stderr, который печатается на экране. Однако он стирается, когда Вы предпринимаете попытки "просмотреть" буфер.
Это действие записывает стандартный вывод программы в файл.
ls -l > ls-l.txt
Здесь создаётся файл с именем 'ls-l.txt'. В нём будет содержаться
всё то, что Вы бы увидели, если бы просто выполнили команду 'ls -l'.
Это действие записывает стандартный поток ошибок программы в файл.
grep da * 2> grep-errors.txt
Здесь создаётся файл, названный 'grep-errors.txt'. В нём будет
содержаться часть вывода команды 'grep da *', относящаяся к
стандартному потоку ошибок.
Это действие записывает стандартный вывод программы в тот же файл, что и стандартный поток ошибок.
grep da * 1>&2
Здесь стандартный вывод команды отправляется в стандартный поток ошибок.
Вы можете увидеть это разными способами.
Это действие записывает стандартный поток ошибок программы туда же, куда и стандартный вывод.
grep * 2>&1
Здесь стандартный поток ошибок команды отправляется на стандартный вывод;
если Вы перешлёте результат через конвейер (|) в less, то увидите, что
строки, которые обычно пропадают (как записанные в стандартный поток
ошибок), в этом случае сохраняются (так как они находятся на стандартном выводе).
Это действие помещает весь вывод программы в файл. Это является подходящим вариантом для заданий cron: если Вы хотите, чтобы команда выполнялась абсолютно незаметно.
rm -f $(find / -name core) &> /dev/null
Это (предположим, для cron) удаляет любой файл с
названием 'core' в любом каталоге. Помните, что Вам следует полностью быть
уверенным в том, что выполняет команда, если возникает желание затереть
её вывод.