'sed -i'和'sed ...>之间的区别文件'

时间:2012-12-29 08:47:09

标签: linux sed

我想知道这两行之间的区别:

sudo sed 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=3/' /etc/default/grub >/etc/default/grub

sudo sed -i 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=3/' /etc/default/grub

似乎有区别,因为第一个返回Permission denied错误而另一个没有。

2 个答案:

答案 0 :(得分:4)

正如@sarathi所说,-i标志就地修改了文件。您获得权限被拒绝错误的原因是因为/etc/default/grub可能只能由root修改。

你的第一个命令:

sudo sed 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=3/' /etc/default/grub >/etc/default/grub

以超级用户身份运行sed,当sed写入其stdout时,它不会执行任何有用的操作。然后它尝试覆盖/etc/default/grub作为当前用户,这是不允许的。

在第二个命令中:

sudo sed -i 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=3/' /etc/default/grub

该文件由sed本身修改,它以root身份运行。

答案 1 :(得分:1)

sed的{p> -i标志说是原地更换。