我有这个想法,也许不太可行,但我觉得值得一问。
假设用户正在运行以下命令:
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 上,他们移动了,列表没有),谁知道呢,也许已经完成了。