Io-Redirection
從 echo 重定向輸出時,如何避免這種意外行為?
我想使用一行命令輕鬆添加到我的主機文件中,但我得到了意想不到的結果。
$ 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 包含在重定向輸出中。
我怎樣才能避免這種情況?
根據您的問題,我不確定為什麼 echo 會失敗,但總的來說,我會
printf
改用它。它的輸出更具可預測性。printf '%s\t%s\t%s\n' '10.0.10.0' 'server.bananas.com' 'server'
解釋
%s\t%s\t%s\n
:這部分解釋了輸出格式是什麼,即字元串、製表符、字元串、製表符、字元串、換行符。- 這三個字元串是提供給的以下參數
printf
。寫入根擁有的文件
另外,我不確定您是否知道,但
sudo sh -c
您可以使用而不是使用該構造sudo tee
。IEprintf … | sudo tee -a /etc/hosts
我發現這更方便,尤其是當它避免在外部轉義字元時
'
。