如何将输出重定向到文件和标准输出

在 bash 中,调用foo将在 stdout 上显示该命令的所有输出。

调用foo > output会将该命令的所有输出重定向到指定的文件(在本例中为 “output”)。

有没有一种方法可以将输出重定向到文件在 stdout 上显示?

答案

foo | tee output.file
ls -a | tee output.file
program [arguments...] 2>&1 | tee outfile
program [arguments...] 2>&1 | tee -a outfile
$ program [arguments...] 2>&1 | tee outfile
$ unbuffer program [arguments...] 2>&1 | tee outfile
<command> |& tee  <outputFile>
ls |& tee files.txt
ls -lR / | tee -a output.file
bash myscript.sh 2>&1 | tee output.log

使用tail -f output应该起作用。

echo "some output" | sudo -u some_user tee /some/path/some_file
echo "hi there, Have to print this on screen and append to a file"
#!/usr/bin/env bash

test x$1 = x$'\x00' && shift || { set -o pipefail ; ( exec 2>&1 ; $0 $'\x00' "$@" ) | tee mylogfile ; exit $? ; }

# do whaetever you want
ls -lr / > output | cat output