私はこの考えを持っています。たぶん実現可能ではないかもしれませんが、尋ねる価値があると思います。
ユーザーが次のコマンドを実行しているとします。
cat ~/file.txt
何かがこのファイルを読み取ろうとするたびに、バックグラウンドでスクリプトまたはコマンドを実行し、そのスクリプトの応答をコンテンツとして返したいと思います。
何とかこれを行うことをお勧めします:
ln -s /folder /symlink
しかし、スクリプトの場合(私の考え):
symlinkcommand /filepath/file.txt "command to run"
私は明らかに言ったことを願っています。あなたの考えや提案があれば返信してください。
ありがとうございます。
答え1
あなたが探しているのは可能ですが、あなたが想像しているものとまったく一致しないかもしれません。私が最もよく見ているアプローチ(実際には非常にまれです)は、次のものを使用して読み取りパイプ(FIFOとも呼ばれる)特殊ファイルと呼ばれるファイルを作成することですmknod
。
mknod file.txt p
その後、別のシェルで「ファイルの内容」を生成するために使用したいスクリプトを起動し、完了したら、その特殊ファイルを複数回読み取れるように自動的に再起動する必要があります。スクリプトのSTDOUTは名前付きパイプにリダイレクトされ、他のプロセス(元のユーザーのプロセス)が何らかの方法でパイプの読み取りを開始するまでスクリプトは一時停止されます。スクリプトが終了すると、「EOF」信号がユーザープロセスに伝播され、すべてが正常に表示されます。
答え2
最も簡単な方法は、次を使用することです。バッシュエイリアスたとえば、
ユーザーコマンドの入力について話している場合です。
別のアプローチは、ユーザー空間のファイルシステムです。ヒューズ
融合基本ファイルシステムのPythonの実装 -https://www.stavros.io/posts/python-fuse-filesystem/
残念ながら、ヒューズファイルシステムのリストが破損しています(FUSE sourceforgeから移動しましたが、リストはありません)。すでに完了している可能性があります。