我想通过命令行修改一些配置设置,例如sshd_config
's UsePAM
. “问题”是取决于系统,现有的配置文件要么只有一个带有设置的条目,yes
要么no
有两行但其中之一被注释掉,或者该设置尚不存在,依赖于默认值价值。果然我可以简单
sed -i '/^.*UsePAM/d;' /etc/sshd_config # remove all occurrences so far
echo "UsePAM yes" >> /etc/sshd_config # append the new value to the end
(只要不涉及任何部分),但这是相当不理想的。我可以编写一个小的 Python 程序来手动实现算法
if setting not present:
append it to the correct section
elif setting present both commented and not:
swap commenting if necessary
else:
set/uncomment the single occurrence of the setting
但是有更简单的方法吗?