2011-07-29 71 views
2

我想創建一個文件並以某種方式將其掛接到一個shell命令,該文件只要我在該文件中執行就會執行。這樣該文件的內容就是shell命令的stdout如何將一個文件映射到一個shell命令以便在你執行`cat`文件時執行?

類似於/proc/meminfo

感謝

+0

如果這是你希望它做的,爲什麼不使用'cat'? – Beta

+0

我想幫助你,但我無法弄清楚你在問什麼。你是說你想在每次運行'cat'時創建一個文件? – Josh

+0

這樣做的辦法是:在你的'.bashrc'中添加'alias cat ='...'',其中'...'用於測試特殊文件並執行特殊的操作,否則調用普通的' cat'。 –

回答

6

/proc/meminfo生活在一個特殊的文件系統procfs,這是由內核實現的。你可以使用FUSE在用戶空間中做類似的事情。

2

也許你應該扭轉這個問題,寫一個shell命令並執行,而不是貓開始嗎?任何「回聲」編輯將出現在標準輸出。你提出的解決方案是「不是unix方式」。

+2

+1 - 清晰度比聰明好。如果OP做了他所提出的任何除了學術原因之外的任何事情,未來的幾代人都會在抓文件的時候抓頭,衝牆,並把窗戶扔到窗外。 – nsfyn55

4

我們曾經這樣做「回到當天」,使程序生成.finger文件。

使您的文件進入命名管道。您使用mknod程序來執行此操作。

然後創建一個程序,該程序可以是一個shell腳本,它不斷循環並將內容寫入該命名管道。

#!/bin/sh 

mknod file p 2>/dev/null 
while true; do 
     (
       echo This is my file. 
       echo There are many like it. 
       echo But this one is mine. 
     ) >> file 
done 

出於某種原因,它不會讓我殺,隨着控制-C,所以我必須使用Control-Z,然後kill %1

現在,當你cat file你會得到的內容,就像這樣:

$ cat file 
This is my file. 
There are many like it. 
But this one is mine. 
+0

*「一切都是文件」哲學的許多令人驚訝的結果之一。 – dmckee

相關問題