帮酷LOGO
0 0 评论
文章标签:文件  GRUB  SED  

问题:

我不熟悉使用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' {



我想让它看起来像:


menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-2aa7ed2c-67a7-42d5-84fb-0ddab74c5dd0' {



我知道sed-i用于就地编辑和s应该搜索 。 但除此之外,我在语法上迷失了,以使它实际上做我们需要的。 据我所知,--unrestricted的定位是必要的,因为我相信如果我们不必进行如此长时间的搜索会更容易,但是,我又是sed新手,并且不确定 。 有人可以帮我这个sed插入吗? 最好还向我解释为什么不同的语法会在哪里,这样,我就可以知道未来要改什么。


回答 1:

这是命令。


sed -i"s/--class os/--class os --unrestricted/" filename



这将在不需要临时文件的情况下替换文件中的行,因为-i选项。

如果"--unrestricted"在行中的位置不重要,这可能更简单。


sed -i"s/'Ubuntu'/'Ubuntu' --unrestircted/" filename




回答 2:


sudo sed -i s'/--class os $menu/--class os --unrestricted $menu/'/etc/default/grub



"$"转义"$"符号,这样它就不会错误inprepreted,而且我指定一个更长的字符串,这样如果命令执行两次你就不会得到两次插入 。




文章标签:文件  GRUB  SED  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语