将输出重定向到文件权限被拒绝?

Posted

技术标签:

【中文标题】将输出重定向到文件权限被拒绝?【英文标题】:Redirect output to a file permission denied? 【发布时间】:2013-05-10 13:07:17 【问题描述】:

我想做一个简单的重定向。当我这样做时

sudo curl <insert link here> > a.txt

我想把curl输出的所有数据都放到a.txt中。但是,我不断收到错误提示

a.txt: Permission denied

有人知道如何解决这个问题吗?我已经尝试通过做在线查找

sudo bash -c curl <insert link here> > a.txt

并显示相同的错误。任何帮助,将不胜感激!谢谢!

【问题讨论】:

How do I use sudo to redirect output to a location I don't have permission to write to?的可能重复 【参考方案1】:

权限提升仅适用于curl 进程(以及在第二个示例中为子shell)本身,不适用于您的(父)shell,因此不适用于重定向。

一种解决方案是在子 shell 本身内进行重定向:

sudo bash -c "curl $LINK >a.txt"

另一个相当惯用的选项是使用tee

curl $LINK | sudo tee a.txt >/dev/null

具体针对curl,也可以让进程本身直接写入文件:

sudo curl -o a.txt $LINK

【讨论】:

嗯,每次我尝试执行其中一个命令时,都会收到一条错误消息 curl: (7) could not connect to host。你知道为什么吗? Curl 无法连接到服务器。也许它已关闭,或者有防火墙,或者您的网络设置有问题,或者您输入错误的 URL。这与您询问的问题无关。【参考方案2】:

我遇到了同样的问题,这是因为 a.txt 的文件夹对你来说是不可写的。 chmod/chown 或将其放入可写文件夹都可以解决问题。

希望这会有所帮助!

【讨论】:

以上是关于将输出重定向到文件权限被拒绝?的主要内容,如果未能解决你的问题,请参考以下文章

用户与权限

在从 UIActivityController 拒绝保存图像的权限后,如何将用户重定向到设置?

重定向和用户权限

用户与权限

第4天文件管理管道用户及组管理用户及权限管理

sudo 与输出重定向