例如,我有四个部分(,,,1.txt
),当它们连接在一起时(),这就是我想要的文件:2.txt
3.txt
4.txt
all.txt
cat 1.txt 2.txt 3.txt 4.txt > all.txt
但是,我不想创建真正的文件(all.txt
),因为它可能非常大,或者非常慢。但是有些程序或软件只接受一个文件作为其参数。(例如,sh all.txt
!= sh 1.txt && sh 2.txt && sh 3.txt && sh 4.txt
)
如何创建这样的虚拟文件?或者如何将它们视为一个文件?
有人在这里问了类似的问题,但是我的电脑权限有限,并且 lostup 被禁止了。
答案1
工艺替代在 bash (和一些其他 shell)中。
./someprogram <(cat {1..4}.txt)
答案2
多个解决方案中的一个是使用 FIFO 管道:
$ mkfifo my_virtual_file.txt
$ cat 1.txt 2.txt 3.txt 4.txt > my_virtual_file.txt &
$ my_command my_virtual_file.txt
$ rm my_virtual_file.txt
这可能会或可能不会起作用,具体取决于my_command
对文件执行的操作:与其他一些解决方案一样,如果它需要在文件中搜索(即在内容中任意向前和向后移动),那么它将失败;相反,如果它只是逐行读取文件,这将起作用。
当然,内容是只读的,命令无法写入它(或者至少不能按预期工作)。