在 linux/bash 中创建无限循环重复文件 cat
create infinite looping repeating file cat in linux/bash
我想做的是发送一个文件 "repeatedly"(就像无限次地搜索它一样)作为另一个程序的输入。命令 line/using bash?
有办法吗
似乎可以通过使用 mkfifo
(这种方式可以轻松控制、重新启动和大文件)
$ mkfifo eternally_looping_filename # you can name this what you want.
然后从 bash 提示符写入 fifo“looping”,例如:创建名为 bash_write_eternal.sh:
的脚本
while [ true ]; do
cat /path/to/file_want_repeated > ./eternally_looping_filename
done
运行 在一个终端
$ ./bash_write_eternal.sh
(如果你想重复使用同一个终端,你也可以将它设置为背景)
然后在另一个终端,运行你的输入程序,比如
$ ./my_program -input ./eternally_looping_filename
或
$ cat ./eternally_looping_filename | ./my_program
您的程序现在将接收到该文件的永久输入,并不断循环。您甚至可以通过中断终端 运行 来 "pause" 接收程序 bash_write_eternal.sh
脚本(它的输入将被暂停,直到您恢复 fifo 写入脚本)。
另一个好处是调用之间 "resumable",而且如果您的程序碰巧不知道如何从 "stdin" 接收输入,它可以从此处的文件名接收输入。
是的。
while [ true ]; do cat somefile; done | somecommand
yes
command,使用文件内容作为参数:
yes "$(<file)" | somecommand
Process substitution 提供了一种机制,bash 可以通过该机制为您生成连接到任意 bash 代码块的临时、可读文件名:
./my_program -input <(while cat file_to_repeat; do :; done)
这将在支持它的操作系统上创建一个 /dev/fd/NN
风格的名称,否则将创建一个命名管道。
一个while :
循环永远重复:
while :
do cat input.txt
done | your-program
要使用辅助函数:
repeat() while :; do cat ""; done
repeat input.txt | your-program
我想做的是发送一个文件 "repeatedly"(就像无限次地搜索它一样)作为另一个程序的输入。命令 line/using bash?
有办法吗似乎可以通过使用 mkfifo
(这种方式可以轻松控制、重新启动和大文件)
$ mkfifo eternally_looping_filename # you can name this what you want.
然后从 bash 提示符写入 fifo“looping”,例如:创建名为 bash_write_eternal.sh:
的脚本while [ true ]; do
cat /path/to/file_want_repeated > ./eternally_looping_filename
done
运行 在一个终端
$ ./bash_write_eternal.sh
(如果你想重复使用同一个终端,你也可以将它设置为背景)
然后在另一个终端,运行你的输入程序,比如
$ ./my_program -input ./eternally_looping_filename
或
$ cat ./eternally_looping_filename | ./my_program
您的程序现在将接收到该文件的永久输入,并不断循环。您甚至可以通过中断终端 运行 来 "pause" 接收程序 bash_write_eternal.sh
脚本(它的输入将被暂停,直到您恢复 fifo 写入脚本)。
另一个好处是调用之间 "resumable",而且如果您的程序碰巧不知道如何从 "stdin" 接收输入,它可以从此处的文件名接收输入。
是的。
while [ true ]; do cat somefile; done | somecommand
yes
command,使用文件内容作为参数:
yes "$(<file)" | somecommand
Process substitution 提供了一种机制,bash 可以通过该机制为您生成连接到任意 bash 代码块的临时、可读文件名:
./my_program -input <(while cat file_to_repeat; do :; done)
这将在支持它的操作系统上创建一个 /dev/fd/NN
风格的名称,否则将创建一个命名管道。
一个while :
循环永远重复:
while :
do cat input.txt
done | your-program
要使用辅助函数:
repeat() while :; do cat ""; done
repeat input.txt | your-program