我尝试编写一个sed程序,在Defaults:user !requiretty
的{{1}}行之后追加Defaults requiretty
。我尝试了以下命令:
/etc/sudoers
这是正常的,但只有在'默认值'之间有4个空格。和' requiretty'。我想修改它以便使用任意数量的空格,所以我尝试了以下内容:
sudo sed -i '/Defaults requiretty/a Defaults:user !requiretty' /etc/sudoers
我检查了regexr上的模式并且没关系,但是命令仍然没有插入所需的行。为什么不呢?
答案 0 :(得分:2)
试试这个;
sed '/Defaults.\s\s.requiretty/a Defaults:user !requiretty' /etc/sudoers
答案 1 :(得分:0)
根据Mustafa的回答,这是一种通过添加一些安全检查来做同样的事情的方法
SUDOER_TMP=$(mktemp)
cat /etc/sudoers > $SUDOER_TMP
sed -i -e 's/PATTERN/OUTPUT/' $SUDOER_TMP
visudo -c -f $SUDOER_TMP && \ # this will fail if the syntax is incorrect
cat $SUDOER_TMP > /etc/sudoers
rm $SUDOER_TMP