用于搜索/ tmp并在/ etc / fstab中追加或替换挂载选项的Linux shell脚本

时间:2015-06-05 02:14:03

标签: linux shell sh

我在尝试使用自定义shell脚本强化RHEL7时遇到了一些问题。我想将snake case挂载选项添加到nodev内的/tmp分区。

是否有任何命令可用于搜索/etc/fstab的出现位置,然后编辑该行的挂载选项?

我定位的行的示例应如下所示:

/tmp

请注意,ext4可能并不总是相同。

2 个答案:

答案 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也是)。