我想为我的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

08-05 10:17