使用 sudo tee 和 Heredoc 附加到现有文件

使用 sudo tee 和 Heredoc 附加到现有文件

在 bash 中生成脚本并将其保存到需要 sudo 的位置我们有这个方法,我喜欢:

sudo tee "$OUTFILE" > /dev/null <<'EOF'
foo
bar
EOF

但是,我想使用该方法附加到现有文件 $OUTFILE。上述方法会覆盖现有文件$OUTFILE。

答案1

您需要附加而不是覆盖的-a选项。tee

答案2

如果您更喜欢使用cat,那么请走这条路线,首先$OUTFILE作为输出的容器传递:

$ OUTFILE=/path/to/restricted_write_access/file
$ sudo out=$OUTFILE sh -c 'cat << EOF >> $out
foo
bar
EOF'

答案3

tee 要求您打开一个到 /dev/null 的流,您可以通过一个简单的方法来完成此操作cat

cat <<EOF >> $OUTFILE
foo
bar
EOF

拯救你的键盘!

相关内容