在 Linux 中,我想创建一个文件,其中文件的内容由程序的输出动态生成。
已经存在的例子有 /dev/random /dev/urandom、/dev/zero 等等...
我想创建一个文件,例如 /home/sam/currentdate.txt,其中文件的内容是运行命令的结果(例如 date,内容如下:
[sam@myserver ~]$ cat ./currentdate.txt
Wed Dec 2 12:12:09 PST 2015
[sam@myserver ~]$
对于我的用例,我需要通过另一个程序跟踪某些程序的输出,该程序无法读取程序输出的内容,而是读取文件的内容。我可以使用 date > filename.txt 通过脚本保存输出的内容,但这需要先将输出保存到磁盘,这在我的用例中效率很低。
答案1
A命名管道可能是你的朋友。创建一个命名管道并让你的进程写入它。然后你的读取进程就可以从中读取。
答案2
这看起来像一个实例XY 问题;你到底想要实现什么?
如果您想读取程序的输出并在脚本中使用它,您可以调用目标程序并将其输出分配给变量:https://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to-the-output-from-a-command。
相反,如果您实际上希望程序异步运行并将其输出存储在脚本可以读取的位置,那么您可以使用磁盘文件(实际上并没有您想象的那么多开销)或命名管道,正如 Iain 建议的那样。