Потоки ввода-вывода по-простому
Потоки ввода-вывода по-простому
В Unix-подобных системах ввод-вывод реализован через потоки: stdin
, stdout
, stderr
.
Пример работы с этими потоками из Python
import sys
print("Enter name: ", end="", file=sys.stderr) # stderr
name = input() # stdin
print("Hello, " + name) # stdout
Простые перенаправления
Перенаправления (redirections
) в shell позволяют изменять места ввода и вывода данных.
Описание | |
---|---|
>f | Вывод в файл f , перезаписывая его. |
2>f | Вывод ошибок в файл f , перезаписывая его. |
<f | Чтение данных из файла f . |
>>f | Добавление вывода в конец файла f . |
| | Передача вывода одной команды в другую. |
Простые перенаправления
Например, можно исполнить пример на Python, написанный выше. Предположим, что этот код сохранён в файле io.py
.
Сделаем файл с данными для ввода inp
с таким содержимым:
OMP
тогда можно сделать, например, такие перенаправления:
python io.py >out <inp 2>err
Результатом такой команды будет:
- файл
out
с содержимымHello, OMP
- файл
err
с содержимымEnter name:
- файл
inp
не меняется, но использован в качестве ввода;
Простые перенаправления
Пайп |
— фундаментальный в Unix, на нем строится очень много, в т.ч. сложных, вещей.
Например, можно вывести все шеллы, которые используют первые 10 пользователей в системе. Выведем при этом только уникальные шеллы, без повторений и в лексикографическом порядке:
head -n 10 /etc/passwd | cut -d: -f7 | sort -u