将命令的输出写入文件时可以在终端上显示输出吗?

将命令的输出写入文件时可以在终端上显示输出吗?

我正在运行命令 say,nmap www.somesite.com>file.txt以便我可以将输出发送到 file.txt。但如果我这样做,我无法在终端上看到该命令的输出。是否可以让它在终端上也可见。

我知道的用法tee,但我希望以这种方式具体地做到这一点。

答案1

tee旨在分割STDIN成一个文件并返回到STDOUT

简单来说,只需通过管道传输即可,如下所示:

nmap www.somesite.com | tee file.txt

目前接受的替代方案是运行nmap两次,这是一个糟糕的想法。
您最好先运行一次到文件,然后输出文件。

nmap www.somesite.com > file.txt; cat file.txt

答案2

这正是它tee的用途。你为什么不想使用它呢?

另一种方法是捕获输出,并将其回显两次:

output=$(nmap localhost)
echo "$output"
echo "$output" > somefile.txt

然而,在 nmap 的特殊情况下,您可以利用它的输出选项 -ox :

      OUTPUT:
         -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
            and Grepable format, respectively, to the given filename.

例如:

nmap -oN somefile.txt localhost

似乎正是您想要的:输出到终端并写入文件。

答案3

不可能同时进行命令行视图和重定向进程

但您可以使用以下命令按顺序使用这两个过程

nmap www.somesite.com && nmap www.somesite.com > file.txt

首先它将在终端中执行命令,然后将输出保存为文件

希望这可以帮助!

相关内容