我想为我的Linux机器更改DNS服务器。因此,我将编辑/etc/resolv.conf文件。
我使用的命令是 SED 。并按照以下步骤将DNS服务器更改为 192.168.1.5 :#cat /etc/resolv.conf | sed '/nameserver/ c\ nameserver 192.168.1.5' > /etc/resolv.conf
问题是:
当我第一次执行命令时,它将resolv.conf更改为:domain somedomain
namserver 192.168.1.5
但是当我再次执行它以将DNS服务器更改为192.168.1.4时:#cat /etc/resolv.conf | sed '/nameserver/ c\ nameserver 192.168.1.4' > /etc/resolv.conf
文件resolv.conf变为空
问题:
1.我是否在以正确的方式更改DNS服务器?
2.上述命令中的 sed 命令是否存在问题?
最佳答案
>
重定向的操作方式是,在运行任何命令之前,输出文件都将被截断,这意味着cat
应该看到一个空文件,因此预期结果为空。我对为什么您的第一次调用有效感到有些困惑。您应该使用一个临时文件(例如mv resolv.conf resolv.conf~
并运行sed -e '...' resolv.conf~ > resolv.conf
,不需要cat
)。另外,如果您使用了GNU sed,则可以使用就地编辑选项(sed -i
),再次不需要cat
。