如何从内核命令行中提取根变量的值
How to extract value of root variable from kernel commandline
我想在下面的内核命令行中提取设置到根变量的值,我不想使用 awk 列号。
console=ttyO0,115200n8 noinitrd mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait=1 ip=none
我可以使用以下命令提取它,但这取决于根变量的位置,但如果该位置发生变化,它将无法工作
cat /proc/cmdline | awk '{print }' | cut -d '=' -f2
有 suggestions/hint/pointers 吗?
编辑:
所有答案都正确,我接受亚伦的回答,因为他是第一个回复的。
sed
在这里效果更好:
cat /proc/cmdline | sed -e 's/^.*root=//' -e 's/ .*$//'
第一个表达式删除 root=
和之前的所有内容。第二个删除下一个 space 和之后的所有内容。
您可以使用:
awk -F 'root=' '{sub(/ .*$/, "", ); print }' /proc/cmdline
/dev/mmcblk0p2
或者不使用正则表达式甚至更短:
awk -F '=' '=="root"{print }' RS=" " /proc/cmdline
/dev/mmcblk0p2
此 awk
命令使用 root=
作为字段分隔符,并将 root=
之后的所有内容作为 </code>(第二个字段)。 <code>sub
函数剥离 space 之后的所有内容,在 </code> 中留下 <code>/dev/mmcblk0p2
并打印出来。
$ echo $root
$ cat /proc/cmdline | grep -o '\broot=[^ ]*'
root=/dev/mapper/VolGroup-lv_root
$ eval $(cat /proc/cmdline | grep -o '\broot=[^ ]*')
$ echo $root
/dev/mapper/VolGroup-lv_root
另一个 awk
:
cat /proc/cmdline | awk -v RS=" " '/^root=/ {print substr([=10=],6)}'
它使用 RS
(记录分隔符)将每个 space 分隔的参数拆分为不同的 awk
记录。然后,模式和 substr()
函数都可以引用找到的记录的开头。
我想在下面的内核命令行中提取设置到根变量的值,我不想使用 awk 列号。
console=ttyO0,115200n8 noinitrd mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait=1 ip=none
我可以使用以下命令提取它,但这取决于根变量的位置,但如果该位置发生变化,它将无法工作
cat /proc/cmdline | awk '{print }' | cut -d '=' -f2
有 suggestions/hint/pointers 吗?
编辑:
所有答案都正确,我接受亚伦的回答,因为他是第一个回复的。
sed
在这里效果更好:
cat /proc/cmdline | sed -e 's/^.*root=//' -e 's/ .*$//'
第一个表达式删除 root=
和之前的所有内容。第二个删除下一个 space 和之后的所有内容。
您可以使用:
awk -F 'root=' '{sub(/ .*$/, "", ); print }' /proc/cmdline
/dev/mmcblk0p2
或者不使用正则表达式甚至更短:
awk -F '=' '=="root"{print }' RS=" " /proc/cmdline
/dev/mmcblk0p2
此 awk
命令使用 root=
作为字段分隔符,并将 root=
之后的所有内容作为 </code>(第二个字段)。 <code>sub
函数剥离 space 之后的所有内容,在 </code> 中留下 <code>/dev/mmcblk0p2
并打印出来。
$ echo $root
$ cat /proc/cmdline | grep -o '\broot=[^ ]*'
root=/dev/mapper/VolGroup-lv_root
$ eval $(cat /proc/cmdline | grep -o '\broot=[^ ]*')
$ echo $root
/dev/mapper/VolGroup-lv_root
另一个 awk
:
cat /proc/cmdline | awk -v RS=" " '/^root=/ {print substr([=10=],6)}'
它使用 RS
(记录分隔符)将每个 space 分隔的参数拆分为不同的 awk
记录。然后,模式和 substr()
函数都可以引用找到的记录的开头。