User Tools

Site Tools


ввода_вывода

Потоки

В системе по-умолчанию всегда открыты три “файла”:

  • stdin - стандартный ввод (клавиатура)
  • stdout - стандартный вывод (экран)
  • stderr - стандартная ошибка (вывод ошибок на экран)

Ко всему прочему, потоки пронумерованы:

  • stdin - 0
  • stdout - 1
  • stderr - 2

Управление потоками

  • > - передать в;
  • » - дописать в;
  • < - взять из;
  • | - отправить следующей команде

Для работы с потоками, часто используют команды

  • tee - отправить в файл и на стандартный вывод
  • xargs - построчно передать на ввод значение следующей команде.

Example

Самый простецкий пример работы конвейера, выведем все файлы и директории содержащие букву r

ls | grep r
error.txt
folder
result.txt

Удаление найденных файлов

find . -name "*.txt" | xargs rm -f

Перенаправление stderr на stdout. Сообщения об ошибках передаются туда же, куда и стандартный вывод.

cron job command > /dev/null 2>&1

Перенаправление ошибки в файл

ls NoExistFile 2> report.txt

cat report.txt
ls: cannot access 'NoExistFile': No such file or directory

Перенаправляем ошибки в отдельный файл

ls NoExistFile > report.txt 2> error.txt

Вывод результата на экран и в файл

ls | tee output.txt
file1.txt
file2.txt
file3.txt

cat output.txt
file1.txt
file2.txt
file3.txt
ввода_вывода.txt · Last modified: 2023/04/06 10:28 (external edit)