2016-02-16 26 views
0

我在Amazon Elastic Beanstalk中有一台服务器,其中hostname命令输出的主机名不是完整域,并且不在/ etc/host文件中。将主机名命令的输出追加到/ etc/hosts

我正在使用一些由于某种原因依赖系统主机名工作的软件。

我想将hostname命令的输出追加到引用本地机器的/ etc/hosts文件中。

现在我有一个主机文件看起来像这样:

127.0.0.1 localhost localhost.localdomain 

我运行这样的命令追加到文件。

hostname | tr '\n' ' ' >> /etc/hosts 

问题是主机名附加为换行符。像这样:

127.0.0.1 localhost localhost.localdomain 
ip-10-0-1-162 

我希望它追加到同一行。

回答

2

您可以使用sed编辑文件的第一行:

sed -i "1s/$/ $(hostname | tr '\n' ' ')/" /etc/hosts 
+0

这工作!谢谢。 – lordmj

0

您可以使用类似

echo "`cat /etc/hosts` `hostname`" 

你也许能够编写直接回到的/ etc /主机,但我宁愿将它写入临时文件,然后用此替换/etc/hosts

如果你想在文件的末尾没有新的生产线,使用

echo -n 

代替。

这假设你想追加到文件的最后一行。

+0

如果我想要一个单行命令来完成这个方法,我该怎么做呢? – lordmj