Bre*_*222 4 grub2 scripts sed text-processing 16.04
我刚开始使用 sed,但很快就爱上了它,因为它在自动化方面具有普遍的灵活性。我希望每次部署新系统时都运行具有各种安全控制的脚本,其中一部分需要我锁定 GRUB。我希望从 GRUB 菜单中解锁一般的 Ubuntu 选项,这样任何人都可以在没有密码的情况下使用它,同时保护其他所有内容的密码。
话虽如此,我希望在 /boot/grub/grub.cfg 文件中搜索特定行并将 --unrestricted 添加到该选项。(我们只使用 16.04.03 所以理论上所有系统在安装时都会有相同的文件)
文件中的行是:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {
Run Code Online (Sandbox Code Playgroud)
我知道 sed -i 用于就地编辑, s/ 应该搜索。但除此之外,我对这里的语法迷失了,让它真正做我们需要的。据我所知,需要 --unrestricted 的定位,因为我相信如果我们不必进行如此长时间的搜索会更容易,但我再次对 sed 感到陌生并且不确定。有人可以帮我插入这个 sed 吗?最好也向我解释为什么不同的语法会出现在它的位置,所以我知道未来。
我的回答类似于 RaidPinata 的:
sudo sed -i s'/--class os \$menu/--class os --unrestricted \$menu/' /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
"\$" 转义了 "$" 符号,这样它就不会被误解,我指定了一个更长的字符串,这样如果命令执行两次,你就不会得到两次插入。
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |