Bash 将命令回显到带有换行符的文件

Bash 将命令回显到带有换行符的文件,bash,file,shell,echo,Bash,File,Shell,Echo,我想像这样回显ettercap: sudo echo $(ettercap -i eth0 -Tq) > /file 当我“cat”该文件时,它应该会给我这样的信息: ettercap NG-0.7.4.2 copyright 2001-2005 ALoR & NaGA Listening on eth0... (Ethernet) ... 但它却给了我这个: ettercap NG-0.7.4.2 copyright 2001-2005 ALoR & NaGA L

我想像这样回显ettercap:

sudo echo $(ettercap -i eth0 -Tq) > /file
当我“cat”该文件时,它应该会给我这样的信息:

ettercap NG-0.7.4.2 copyright 2001-2005 ALoR & NaGA

Listening on eth0... (Ethernet)

...
但它却给了我这个:

ettercap NG-0.7.4.2 copyright 2001-2005 ALoR & NaGA Listening on eth0... (Ethernet) ...
我该如何解决这个问题?提前感谢。

您应该:

sudo ettercap -i eth0 -Tq > /file
就这样


如果在将此输出保存到文件之前需要将其保存到变量中,请使用
$()
运算符:

output=$(ettercap -i eth0 -Tq)
echo "$output" > /file

请注意,“$output”周围的双引号对于保持空白非常重要

为什么不
sudo ettercap-i eth0-Tq>/file
?我现在感觉很笨“-”非常感谢。没问题<代码>$(命令)进行替换,当然,它必须去掉换行符,因为它是作为参数列表的一部分提供的,通常在参数列表中没有换行符。@TNW-添加您的注释作为答案,我将upvote@TNW我也是:),我在回答问题之前没有读过。答案非常清楚,我刚刚打开了文本框…Backtics是Use
$(…)
谢谢你的提示。检查我的更新。我以前不知道。我真的很喜欢它们。请注意,双引号对保持空白至关重要