
Насколько мне известно, можно создавать каналы между приложениями, например, как это:
$ step1 < input_file | step2 | step3 > result_file
И вы можете получить доступ к таким устройствам, как /dev/urandom
, /dev/zero
. /dev/null
, и т. д.:
$ cat /dev/urandom > "output_file"
$ someprog > /dev/null
Мой вопрос в том, возможно ли сделать канал с блочным устройством как для ввода, так и для вывода одновременно? Например, я хочу прочитать input_file
, отправить в /dev/example
(который является rw
), а затем прочитать его вывод в output_file
. Это можно сделать одной командой, например так:
$ cat input_file | /dev/example > output_file
или
$ /dev/example < input_file > output_file
или это рекомендуется делать в две команды?
PS: Возможно, я неправильно пишу команды или делаю синтаксические ошибки, пожалуйста, дайте мне знать, как это сделать. Я использую sh
или bash
, я не знаю, как использовать другие консоли. Если я неясно выразился, дайте мне знать, так как английский не мой родной язык.
решение1
То, что вы написали, не имеет смысла: /dev/example
это файл, а не программа или канал. Если вы записываете данные на устройство, они не проходят через устройство и не передаются в другую программу.
Например, данные, записанные в /dev/audio
воспроизводятся на громкоговорителях. Если вы считываете данные с /dev/audio
, вы получаете данные, записанные на микрофоне. Нет никакой связи между тем, что воспроизводится на громкоговорителях, и тем, что записывается с помощью микрофона.