Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell sudo不';将sed的输出重定向到文件时无法工作_Shell_Unix - Fatal编程技术网

Shell sudo不';将sed的输出重定向到文件时无法工作

Shell sudo不';将sed的输出重定向到文件时无法工作,shell,unix,Shell,Unix,可能重复: 假设我想更改/home中的文件“foo”,对其应用一些正则表达式(通过sed),并将结果放入名为/home/foo2的文件中 我对/home或foo都没有读/写权限,因此我使用sudo。然而,我仍然得到了拒绝的许可 sudo sed "s/bar/baz/" <foo >foo2 bash: foo2: Permission denied sudo sed“s/bar/baz/”foo2 bash:foo2:权限被拒绝 有什么想法吗? 谢谢使用就地选项,-i。您的语

可能重复:

假设我想更改/home中的文件“foo”,对其应用一些正则表达式(通过sed),并将结果放入名为/home/foo2的文件中

我对/home或foo都没有读/写权限,因此我使用sudo。然而,我仍然得到了拒绝的许可

sudo sed "s/bar/baz/" <foo >foo2
bash: foo2: Permission denied
sudo sed“s/bar/baz/”foo2
bash:foo2:权限被拒绝
有什么想法吗?
谢谢

使用就地选项,
-i
。您的语法是:

sed -i [pattern] filename

虽然
sh
通常可能不是一个好主意,但这将允许您为shell创建一个新文件
foo2


sudo sh-c“sudo sed's/bar/baz/'foo2”

-我是用来阅读文件的,我被拒绝了写它的权限哦!事实证明-我是在同一个文件中读写的,非常感谢(但我必须先做sudo cp foo foo 2)我应该提到,我怀疑您在同一时间读写同一个文件时遇到了问题,您的问题与此相关,而不是文件权限问题,在我写的命令中,我有一个输入错误:我写了“>foo-foo2您遇到了问题,因为shell在启动
sudo
之前执行I/O重定向,所以它使用您自己的权限执行重定向,您知道这是不够的。因此,要让它工作,您必须让程序通过
sudo
运行,以执行I/O重定向。我看到的两个答案都达到了这个结果。