我有一个新的Ubuntu 12.04 VPS。我试图编写一个安装脚本,完成整个LAMP安装。我遇到的问题是向/etc/hosts
文件追加一行。我当前的主机文件如下所示:
127.0.0.1 localhost Venus
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
字符串
我希望它看起来像这样:
127.0.0.1 localhost Venus
192.241.xx.xx venus.example.com venus
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
型
我使用append(\a
)命令尝试了各种sed
命令。出于某种原因,Ubuntu要么只是在终端中回显hosts
文件的内容,要么根本不做任何事情。我如何使用bash脚本正确地将第二行注入文件?
8条答案
按热度按时间mi7gmzs61#
请确保使用
sed
的-i
选项。字符串
否则,
型
会将该行附加到文件末尾,这样就可以按预期工作。
sh7euo9m2#
如果你在Mac上或者你需要sudo权限,试试这个:
字符串
它仍然会要求您输入密码。
另一种方式从@kainjow
型
pinkon5k3#
插入/更新条目
如果你想使用bash以编程方式插入/更新主机条目,这里有一个我写的脚本:
字符串
该脚本旨在与OS X一起使用,但也可以在Linux上工作,只需稍作调整。
t9eec4r04#
字符串
62o28rlo5#
我应该指出,
sed
(stream 编辑器)实际上并不是用来编辑文件的,尽管它可以用来编辑文件。(Standard sed没有内置的机制来写入标准输出以外的内容。)一个更合适的工具是ed
。下面的艾德脚本说“找到包含正则表达式/127.0.0.1/的行,并在下一行追加”(单独的句号告诉艾德停止追加)。
字符串
也就是说,你真的可以很简单地将这一行附加到/etc/hosts文件的 end:
型
pdkcd3nj6#
可以使用
sed
,例如:字符串
8iwquhpp7#
我开发了一个用户友好的脚本,可以轻松地在主机文件中添加、删除和列出IP地址和主机名:
字符串
要执行它,只需运行:
型
qfe3c7zg8#
尝试使用root访问。
字符串
sudo超级用户权限
型
这将把行附加到android中的主机