运行一个在读取文件时返回字符串的命令

运行一个在读取文件时返回字符串的命令

我有这个想法,也许不太可行,但我觉得值得一问。

假设用户正在运行以下命令:

cat ~/file.txt

每当有东西尝试从此文件中读取时,我想在后台运行脚本或命令,并将该脚本的响应作为内容返回。

不知何故喜欢这样做:

ln -s /folder /symlink

但对于脚本(我的想法):

symlinkcommand /filepath/file.txt "command to run"

希望我说清楚了。如果有的话请回复您的想法和建议。

谢谢。

答案1

您正在寻找的东西是可能的,但可能并不完全像您想象的那样。我最常看到的方法(这确实是一种非常罕见的情况)是使用以下命令创建正在读取的文件命名管道(又名 FIFO)特殊文件mknod

mknod file.txt p

然后,您需要在单独的 shell 中启动要用来生成“文件内容”的脚本,并在完成后自动重新启动,以便允许多次读取该特殊文件。脚本的 STDOUT 将被重定向到命名管道,并且脚本将暂停,直到其他进程(原始用户的进程)开始以某种方式读取管道。一旦脚本结束,“EOF”信号将传播到用户的进程,使一切看起来正常。

答案2

对你来说最简单的方法是使用bash 别名,例如
如果您谈论用户命令输入。

另一种方法是用户空间中的文件系统保险丝

fusion 基本文件系统的 Python 实现 -https://www.stavros.io/posts/python-fuse-filesystem/

不幸的是,fuse 文件系统列表已损坏(在 FUSE sourceforge 上,他们移动了,列表没有),谁知道呢,也许已经完成了。

相关内容