使用bash将内容附加到ROOT文件吗?

时间:2019-02-27 12:22:42

标签: bash

我可以做到

SELECT * FROM Table WHERE COALESCE(Status, 0) IN (0, 3)

但是我做不到:

echo -e "foo\nbar" >> foobar

如果我尝试

echo -e "protected" >> foobar
sudo chown root:root foobar

sudo echo -e "foo\nbar" >> foobar
-bash: foobar: Permission denied

我在文件中得到sudo sh -c 'echo -e "foo\nbar" >> toto'

3 个答案:

答案 0 :(得分:4)

sh手册页中:

  

用单引号引起来的字符保留了字面值   引号中的每个字符。单引号可能不会出现   在单引号之间,即使前面加上反斜杠也是如此。

尝试:

sudo sh -c "echo -e \"foo\nbar\" >> toto"

答案 1 :(得分:1)

如果您有完整的sudo,则可以选择另一种方法-基本上是做同样的事情。 有时候有选择会很好。

echo 'printf "%s\n" foo bar >> toto' | sudo su

将命令printf "%s\n" foo bar >> toto插入sudo su的标准位置,默认为root。添加用户后,您可以执行任何操作。

答案 2 :(得分:1)

您可以自己打印数据,并使用sudo附加到文件:

printf '%s\n' foo bar | sudo tee -a foobar