gpt4 book ai didi

bash - 如何使用 sed 将行附加到空文件,而不是 echo?

转载 作者:行者123 更新时间:2023-11-29 09:11:46 36 4
gpt4 key购买 nike

我有以下问题:在脚本中,不能以 root 身份执行,我必须向新创建的空文件写入一行。此文件位于/etc 中,因此我需要更高的权限才能写入它。

创建文件很简单:

sudo touch /etc/myfile

现在,像这样只使用 echo 写入文件是行不通的......

sudo echo "something" > /etc/myfile

...因为只有命令的第一部分(echo)使用 sudo 执行,而不是重定向到文件中。

以前我用过这样的东西......

sudo sed -i -e "\$aInsert this" /etc/differntfile

...添加到文件的末尾,这是有效的,因为文件不是空的。但是由于 sed 是基于行的,所以它什么都不做,文件完全是空的。

有什么建议吗?有没有办法用 echo 以某种方式做到这一点?任何特殊的 sed 表达式?还有其他我可以使用的工具吗?

最佳答案

你可以使用tee:

echo "something" | sudo tee /etc/myfile   # tee -a to append

如果您不想看到输出,或者重定向到 /dev/null:

echo "something" | sudo tee /etc/myfile > /dev/null

另一种选择是使用 sh -c 在 sudo 下执行完整命令:

sudo sh -c 'echo "something" > /etc/myfile'

关于使用 sed 执行此操作:我认为这是不可能的。由于 sed 是一个流编辑器,如果没有流,它就无能为力。

关于bash - 如何使用 sed 将行附加到空文件,而不是 echo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38697974/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com