我在尝试使用自定义shell脚本强化RHEL7时遇到了一些问题。我想将snake case
挂载选项添加到nodev
内的/tmp
分区。
是否有任何命令可用于搜索/etc/fstab
的出现位置,然后编辑该行的挂载选项?
我定位的行的示例应如下所示:
/tmp
请注意,ext4可能并不总是相同。
答案 0 :(得分:0)
我设法通过使用代码来解决问题:
sed -r -i 's/tmp\s(\S+)\s(\S+)/tmp \1 \2,nodev/' /etc/fstab
此命令会记住分组,然后我可以在特定匹配行后面附加挂载选项。
答案 1 :(得分:0)
假设GNU sed
(因为它是RHEL 7而足够安全),那么你可以考虑:
sed -i.bak -r \
-e '/\s+\/tmp\s+/ { /nodev/! s%\s+/tmp\s+(\S+)\s+% /tmp \1 nodev,%; }' \
/etc/fstab
第一个模式查找由空格包围的/tmp
;第二种模式寻找不包含nodev
的行(有点粗略;它假设没有替代选项,如nodeviant
也可以出现)。然后它查找由一个或多个空格组成的字符串,/tmp
,一个或多个空格,一个或多个非空格,记住以供以后使用,再一次查找另外一个空格;它用空格/tmp
,空格,记住的内容,另一个空格和nodev,
替换它。这会将nodev
选项放在选项字段的开头。如果它必须在最后,请做第二次记忆并将选项放在最后。
这会处理文件中的多个空格,并且还避免重复nodev
选项,并且只映射包含空格包围/tmp
的行(而原始答案会混淆/usr/tmp
也是)。