Shell 在/etc/hosts文件中添加和删除条目的最佳方法是什么?

Shell 在/etc/hosts文件中添加和删除条目的最佳方法是什么?,shell,unix,hosts,Shell,Unix,Hosts,当我在一个工作VPN上时,我需要访问一个特定的内部站点,但我需要通过SSH隧道通过我们的一个开发服务器到达它。这很好 但是,每当我需要这样做时,我都需要在hosts文件中添加一个条目,将这个特定的域别名为localhost,并执行SSH隧道,因此当我完成时,我需要从hosts文件中删除该条目。我想我会自动化这是相对容易的。但是,管理主机文件并不像我想象的那么简单: 我试过: cat /etc/hosts | grep -v 'internal.name.company.com' > /et

当我在一个工作VPN上时,我需要访问一个特定的内部站点,但我需要通过SSH隧道通过我们的一个开发服务器到达它。这很好

但是,每当我需要这样做时,我都需要在hosts文件中添加一个条目,将这个特定的域别名为localhost,并执行SSH隧道,因此当我完成时,我需要从hosts文件中删除该条目。我想我会自动化这是相对容易的。但是,管理主机文件并不像我想象的那么简单:

我试过:

cat /etc/hosts | grep -v 'internal.name.company.com' > /etc/hosts
然而,这总是导致一个空的
/etc/hosts
文件。如果我运行
cat/etc/hosts | grep-v'internal.name.company.com'
我会得到我想要的输出。我错过了什么明显的东西吗?当我将输出重定向到另一个文件时,比如说~/test,结果与预期一致,该文件包含我预期的内容。

请尝试以下方法:

grep -v 'internal.name.company.com' /etc/hosts > /tmp/hosts.tmp ; cp /tmp/hosts.tmp /etc/hosts
试着这样做:

grep -v 'internal.name.company.com' /etc/hosts > /tmp/hosts.tmp ; cp /tmp/hosts.tmp /etc/hosts

您还可以使用
sed
直接修改文件:

sed '/internal\.name\.company\.com/d' hosts

您还可以使用
sed
直接修改文件:

sed '/internal\.name\.company\.com/d' hosts

是的,这是重复的,我的错,我没有想到搜索该问题:(.投票以重复方式关闭。如果你只有0分的答案,你仍然可以删除它!是的,这是重复的,我的错,我没有想到搜索该问题:(.投票以重复方式关闭。如果您只有分数为0的答案,您仍然可以将其删除!