В Linux я хотел бы создать файл, в котором содержимое файла динамически генерируется на выходе программы.
Уже существующие примеры: / dev / random / dev / urandom, / dev / zero и т. Д.
Я хотел бы создать файл, например /home/sam/currentdate.txt, в котором содержимое файла является результатом выполнения команды (например, даты, и будет читать:
[sam@myserver ~]$ cat ./currentdate.txt
Wed Dec 2 12:12:09 PST 2015
[sam@myserver ~]$
Для моего варианта использования мне нужно отслеживать вывод определенных программ другой программой, которая может не читать содержимое вывода программы, а содержимое файла. Я могу сохранить содержимое вывода с помощью сценария, используя date> filename.txt, но для этого требуется сначала сохранить вывод на диск, что будет неэффективно в моем случае использования.
А именованный канал может быть твоим другом. Создайте именованный канал и пусть ваши процессы будут писать в него. Затем ваш процесс чтения сможет читать с него.
Это похоже на экземпляр проблема XY; чего именно вы пытаетесь достичь?
Если вы хотите прочитать вывод программы и использовать его в своем скрипте, вы можете вызвать целевую программу и назначить ее вывод переменной: https://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to-the-output-from-a-command.
Если вместо этого вы действительно хотите, чтобы программа запускалась асинхронно и сохраняла свой вывод там, где ваш сценарий может его прочитать, вы можете использовать файл на диске (который на самом деле не так много накладных расходов, как вы думаете) или именованный канал, как Iain предложил.