如何在保存标准输出到文件的同时保留颜色?
介绍
本文将介绍我们可以使用的工具,这些工具可以在将标准输出发送到文件的同时保持其颜色。这在故障排除时尤其有用,因为它使彩色区域更容易扫描输出日志。
使用Grep
grep命令可以用于在文件中搜索文本模式或字符串。这些模式称为正则表达式。
语法
grep命令的语法如下:
$ grep [options] pattern [files]
示例
让我们使用cat命令创建一个example.txt文件。之后我们将使用grep命令处理该文件。
$ cat >> example.txt tutorials point rocks
让我们使用grep并用颜色突出匹配的字符串,然后将输出发送到不同的文件:
$ grep --color=always "tutorials point rocks" example.txt > grep_output.txt
输出
输出将保存到grep_output.txt。您可以使用cat命令查看文件内容:
$ grep --color=always "tutorials point rocks" example.txt > grep_output.txt $ cat grep_output.txt tutorials point rocks
为了在将输出发送到文件时保留ANSI序列,我们使用了grep的`-color=always`选项。默认情况下,grep在通过管道传输到文件时会从输出中删除颜色。
使用tee
tee命令是一个工具,它同时接收标准输入,写入一个或多个文件,并输出到标准输出。
我们将通过管道与其他几个命令结合使用它。
语法
tee命令的语法如下:
$ tee [option]…[file]…
示例
我们将使用echo命令创建一些彩色输出;我们将使用管道将其与tee命令结合以存储输出。
$ echo -e "\e[1;32m Tutorial point rocks \e[0m" | tee -a tee_output.txt
输出
您将得到此输出:
$ echo -e "\e[1;32m Tutorial point rocks \e[0m" | tee -a tee_output.txt Tutorial point rocks
作为一个简单的例子,我们使用了tee来存储来自echo命令的彩色输出。类似地,我们可以将tee与其他生成彩色输出或日志的命令结合使用。
使用echo
echo命令显示我们作为参数提供的文本字符。
可以使用以下转义序列与echo一起指定文件中内容的颜色:
$ echo -e "\e[1;45m tutorials point rocks \e[0m" > echo_output.txt
示例
通过这样做,文本将被着色并保存到echo_output.txt文件。让我们用cat命令查看它:
$ cat echo_output.txt
输出
您将得到以下输出:
tutorials point rocks
使用script
script命令用于创建每个终端活动的逐字记录。它会记录每个活动,包括输入和输出,直到我们停止它。
默认情况下,它将数据存储为一个typescript文件。但是,如果我们想将输出保存到不同的文件,我们可以指定一个参数。
script命令使用两个文件:一个用于终端输出,另一个用于计时信息。
语法
让我们看看script命令的语法:
$ script [options] [file]
示例
让我们运行以下命令:
$ script -q /dev/null -c "echo -e '\e[1;45m tutorials point rocks \e[0m'" > script_output.txt
我们不会收到任何输出,但是我们可以使用cat查看新生成的文件中的内容:
$ cat script_output.txt
输出
tutorials point rocks
结论
本文讨论了我们可以使用的工具,这些工具可以在将标准输出或stdout保存到文件的同时保留颜色。我们详细讨论了grep、tee、script和echo工具。还有其他几种方法可以在将stdout保存到文件时保留颜色,掌握以上工具后,您可以探索这些方法。