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

use*_*869 9 unix curl permission-denied io-redirection

我想做一个简单的重定向.当我做

sudo curl <insert link here> > a.txt
Run Code Online (Sandbox Code Playgroud)

我想把curl输出的所有数据都放到a.txt中.但是,我一直在说错误

a.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)

有人会知道怎么解决这个问题吗?我试过在网上看

sudo bash -c curl <insert link here> > a.txt
Run Code Online (Sandbox Code Playgroud)

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

Cai*_*von 25

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

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

sudo bash -c "curl $LINK >a.txt"
Run Code Online (Sandbox Code Playgroud)

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

curl $LINK | sudo tee a.txt >/dev/null
Run Code Online (Sandbox Code Playgroud)

对于curl具体情况,你也可以让这个过程本身写入直接文件:

sudo curl -o a.txt $LINK
Run Code Online (Sandbox Code Playgroud)

  • Curl 无法连接到服务器。也许它已关闭,或者有防火墙,或者您的网络设置有问题,或者您输入了错误的 URL。这与您询问的问题无关。 (2认同)