2016-02-16 65 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