tee用法
以下会用到tee、>()和/dev/null。
tee:从标准输入和输出读取内容,然后写到标准输出和文件中。tee [OPTION]… [FILE]… Copy standard input to each FILE, and also to standard output.
>()或<():用于创建进程替换(Process Substitution)。进程替换允许你将一个命令的输出当作文件来处理,这在需要将命令的输出传递给多个命令时非常有用。
>(command
):将 command
的标准输出(stdout)重定向到一个临时文件中,这个临时文件可以被其他命令读取。
<(command)
:将 command
的标准输入(stdin)重定向到一个临时文件中,这个临时文件可以被其他命令读取。
diff <(sort file1.txt) <(sort file2.txt) :sort file1.txt
和 sort file2.txt
的输出分别被重定向到两个临时文件中。diff
命令比较这两个临时文件的内容。
/dev/null:一个黑洞文件,任何输入都会消失
根据以上内容可以实现将一个文件的输出同时输出两个文件:
cat /etc_data/cfg/gantrybasicconfig_cur.json | tee >( grep rsuip ) >(grep rsuport) > /dev/null
将gantrybasicconfig_cur.json的内容输出给tee,然后tee将其分别输出给>( grep rsuip )、>(grep rsuport)和标准输出,这时使用了标准输出重定向到/dev/null,这可以实现标准输出上不会出现gantrybasisconfig_cur.json的内容。>( grep rsuip ) 和>(grep rsuport)会分别单独输出到标准输出,显示到屏幕上。