gpt4 book ai didi

linux - 用 sed 给 grub 添加一个内核参数

转载 作者:IT王子 更新时间:2023-10-29 01:25:59 26 4
gpt4 key购买 nike

我正在编写一个 bash 脚本以非交互方式在 Linux 系统上启用 hibernate 。为此,我需要插入一个 shell 变量,该变量在一段时间的特定行上包含斜杠,在该行的引号内。

要编辑的文件的相关部分如下所示:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

我需要把它改成这样:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"
GRUB_CMDLINE_LINUX=""

添加的参数由 shell 变量提供。

我试过这个:

sed -i '\*^GRUB_CMDLINE_LINUX_DEFAULT* s*"$* '"$(grub_resume_boot_option)"'"*' /etc/default/grub

我的目标逻辑是:“寻找以模式“GRUB_CMDLINE_LINUX_DEFAULT”开头的行,并用给定模式替换最后一个“。使用 * 作为分隔符以保留扩展变量中的斜杠。”

但是,如果行尾有任何空格,命令将失败。有什么方法可以让它不考虑行尾的空格吗?

此外,如果有更简单或可读的解决方案,我会非常感兴趣。

最佳答案

你可以这样做:

sed -i 's#^\(GRUB_CMDLINE_LINUX_DEFAULT="quiet\)"$#\1 resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"#' /etc/default/grub

示例:

$ sed 's#^\(GRUB_CMDLINE_LINUX_DEFAULT="quiet\)"$#\1 resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"#' <<<'GRUB_CMDLINE_LINUX_DEFAULT="quiet"'
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"

关于linux - 用 sed 给 grub 添加一个内核参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com