Как программы UNIX взаимодействовали друг с другом до изобретения трубы?

Ошибка возникает из-за порядка, в котором оболочка выполняет действия.

Перенаправление выполняется еще до того, как оболочка выполнит sudo , и поэтому выполняется с разрешениями пользователя, с которым вы в настоящее время работаете. Поскольку у вас нет прав на запись для создания / усечения цели перенаправления, вы получите ошибку отказано в разрешении из оболочки.

Решение состоит в том, чтобы гарантировать, что выходной файл создается под идентификатором, предоставленным вам sudo , например с tee :

$ generate_output | sudo tee target_file
6
05.07.2017, 20:37
1 ответ

Перенаправление ввода-вывода отсутствовало в первоначальной реализации PDP -7 (примерно в 1969 году ), но вскоре после этого было добавлено. При этом вы можете реализовать моральный эквивалент трубы :

.
prog1 | prog2

можно реализовать с помощью

prog1 > tempfile
prog2 < tempfile
rm tempfile

На самом деле трубы часто объясняются с помощью этой модели.

Бумага Эволюция системы разделения времени Unix -Ритчи настоятельно рекомендуется для ранней истории Unix. В нем говорится: «Каналы появились в Unix в 1972 году».

9
27.01.2020, 20:25

Теги

Похожие вопросы