You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中用cat正确写入文件且不输出到终端?

解决用cat写入文件并抑制终端输出的问题

你之前的cat命令无效的核心原因是:当cat后指定了目标文件路径时,它会优先读取该文件的原有内容并输出到终端,完全忽略<< EOF提供的输入内容,自然无法更新文件。

要实现用cat正确写入文件(支持变量替换)且不输出内容到终端,需要解决两个关键问题:让cat读取输入内容并写入目标文件,同时确保写入操作拥有足够权限。

正确的命令写法

使用sudo sh -c包裹cat和重定向操作,让重定向在sudo权限环境下执行,同时cat的输出直接写入文件,不会流向终端:

sudo sh -c 'cat > /etc/kibana/kibana.yml' << EOF
server.port: 5601
elasticsearch.hosts: ["http://${IP}:9200"]
EOF

原理说明

  • sudo sh -c 'cat > /etc/kibana/kibana.yml':启动拥有sudo权限的shell进程,执行cat > 文件命令,确保写入操作有权限修改/etc/kibana/下的文件。
  • << EOF到EOF:提供要写入的内容,其中${IP}会被当前shell解析替换为实际值,再传递给sudo环境中的cat命令写入文件。
  • 全程无多余终端输出,因为cat的输出直接写入目标文件,没有暴露到终端。

另外,如果你仍想使用tee但抑制输出,也可以用这个简化写法:

sudo tee /etc/kibana/kibana.yml > /dev/null << EOF
server.port: 5601
elasticsearch.hosts: ["http://${IP}:9200"]
EOF

这里> /dev/null将tee的标准输出重定向到空设备,避免内容在终端显示。

内容的提问来源于stack exchange,提问作者eme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:35:23