'sed -i'和'sed ... > file'的区别

  • 本文关键字:sed file 区别 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

似乎有区别,因为第一个返回权限被拒绝错误,而另一个则不返回。

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

您的第一个命令:

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

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

在第二个命令中:

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

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

sed 的-i标志表示就地替换。

最新更新