我可以将stdin直接重定向到文件吗?

时间:2017-02-08 07:03:04

标签: bash

bash 中,我可以在以下命令行中以某种方式摆脱cat部分(以及它带来的分支)吗?

cat >some_file

2 个答案:

答案 0 :(得分:5)

bash中使用流程替换,以避免useless-use-of-cat

> file
while IFS= read -r line
do
  printf "%s\n" "$line" 
done < /dev/stdin >> file

要阅读表单stdin并附加到运行中的file> file会在开始阅读前截断文件内容。

包含来自Leon's comment的建议,以获得执行此操作的单行选项

while IFS= read -r line; do echo "$line"; done > file

答案 1 :(得分:2)

要仅使用bash工具,您可以执行以下操作:

printf '%s'  "$(< infile)"

但两者都是:

  • 我认为小文件的速度要快得多。
  • 它会将整个文件收集到内存中,这对于长文件来说非常糟糕。

这就是为什么猫作为工具存在的原因。