>我想知道这两行之间的区别:
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
标志表示就地替换。