linux的重定向:
0 标准输入
1 标准输出
2 错误信息输出
#!/bin/bash
# 文件名 test.sh
for i in $(seq 1 10)
do
echo $i
sleep 1
done
默认情况下,程序的标准输出和标准错误会定向到控制台,
sh test.sh #默认指向的是终端显示器 等价于 sh test.sh 1>tty 2>&1 # tty既是当前终端 &1是对程序文件描述符1的引用,
1
代表程序的文件描述1
,其对tty是终端的显示器
2
代表程序的标准错误,&1
就是对文件描述符1
的引用
我们可以将程序的标准输出和标准错误重定向到文件里
sh test.sh 1>log1 2>log2
可以将标准输出和标准错误定位到同一个文件,
sh test.sh 1>log 2>log # 标准输出和标准错误都会各自打开log
sh test.sh 1>log 2>&1 # 标准输出打开log,而标准错误,定向到标准输出.这样只打开了一次log
如果不想要日志文件,则可以输出到/dev/null
,其所接收到的信息都会被丢弃.
sh test.sh 1>/dev/null 2>&1
参考:
https://www.cnblogs.com/sharesdk/p/9203609.html
https://www.cnblogs.com/kevin-yuan/p/10063807.html
https://www.jb51.net/article/169778.htm