在linux/bash中创建无限循环重复文件cat

rog*_*ack 5 linux bash cat

我想做的是"重复"发送一个单独的文件(比如无数次),作为另一个程序的输入.在命令行/使用bash有没有办法?

gle*_*man 6

yes命令使用文件的内容作为参数:

yes "$(<file)" | somecommand
Run Code Online (Sandbox Code Playgroud)

  • 这种方法的副作用是对文件的任何更改都不会被选中.它将继续重复文件的内容,就像它们在第一次执行时一样.以防这是重要的. (3认同)
  • 不幸的是,至少在OS X中,输入文件较大,这会产生`/ usr/bin/yes:参数列表太长了 (3认同)

Zif*_*ion 5

是的。

while [ true ]; do cat somefile; done | somecommand
Run Code Online (Sandbox Code Playgroud)

  • 不过效果是一样的。`[ true ]` 成功,因为 `[` 的参数是一个非空字符串。`[ false ]` 也可以工作,但我认为每个人都同意这会造成不必要的混淆:) (3认同)
  • 应该只是`while true;`。你不需要`[]`,那是为了测试表达式。 (2认同)

Cha*_*ffy 4

进程替换提供了一种机制,bash 可以通过该机制生成连接到任意 bash 代码块的临时、可读文件名:

./my_program -input <(while cat file_to_repeat; do :; done)
Run Code Online (Sandbox Code Playgroud)

/dev/fd/NN这将在支持它的操作系统上创建一个-style 名称,或者创建一个命名管道。