我想使用一行命令轻松添加到我的主机文件中,但我得到了意想不到的结果。
$ sudo sh -c 'echo -e "10.0.10.0\tserver.bananas.com\tserver" >> /etc/hosts'
$ cat /etc/hosts
-e 10.0.10.0 server.bananas.com server
我在 echo 上使用 -e 开关来启用选项卡的反斜杠转义,但 -e 包含在重定向的输出中。
我怎样才能避免这种情况?
答案1
我不太确定为什么 echo 根据您的问题失败,但一般来说,我会使用它printf
。它的输出更加可预测。
printf '%s\t%s\t%s\n' '10.0.10.0' 'server.bananas.com' 'server'
解释
%s\t%s\t%s\n
:这部分解释了输出格式,即字符串、制表符、字符串、制表符、字符串、换行符。- 这三个字符串是提供给 的以下参数
printf
。
写入 root 拥有的文件
另外,我不确定您是否知道,但sudo sh -c
您可以不使用该构造,sudo tee
而是使用。 IE
printf … | sudo tee -a /etc/hosts
我发现这更方便,特别是当它避免必须转义外部'
.