如何使用特定用户重定向到文件以创建该文件

时间:2019-06-18 19:41:56

标签: bash

在脚本中的很多次我都将输出从终端重定向到文件或其他内容。有时,我会为命令指定一个用户,但是该用户在重定向的另一端不起作用。

sudo -i
# We are now the root user.

sudo -u abc echo 'Something...' > a_file.txt

即使以abc用户身份进行回显,该文件仍将以root用户身份创建。

我了解为什么会发生这种情况,我希望有人知道一种使其按需运行的方法,以便以所有者abc用户身份创建文件a_file.txt。

1 个答案:

答案 0 :(得分:1)

您可以在sudo shell中运行多个命令,然后所有这些命令都将在同一用户下运行:

sudo -u abc sh -c 'echo sth > a_file.txt'

或者您可以使用三通管道:

sudo -u abc sthRequiringSudo | sudo -u abc tee a_file.txt >/dev/null

或者您可以将命令传递给sudo shell标准输入:

sudo -u abc -s <<< "echo sth >a_file.txt"

您甚至可以将多行命令发送到sudo shell标准输入:

sudo -u abc -s << EOF
echo sth >a_file.txt
echo sthelse >>a_file.txt
EOF