linux 2>&1
作者:admin 发布于:2020-9-15 16:47 Tuesday 分类:Linux
.其实很简单,网上说的复杂了
在Linux系统中0 1 2是一个文件描述符
名称 | 代码 | 操作符 | Java中表示 | Linux 下文件描述符(Debian 为例) |
---|---|---|---|---|
标准输入(stdin) | 0 | < 或 << | System.in | /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0 |
标准输出(stdout) | 1 | >, >>, 1> 或 1>> | System.out | /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0 |
标准错误输出(stderr) | 2 | 2> 或 2>> | System.err | /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0 |
正常情况下
echo "hello" > t.log
其实也可以写成
echo "hello" 1> t.log
我们再来看: 2>&1
这句话实际上是想把错误输出重定向到标准输出
但是直接写2>1, 就会把1当做一个文件了,所以这个&符号相当于一个转义符一样的
搞懂了之后你可以随便写,随意控制输出
下面这句话的意思是把标准输出out.txt 把错误输出到err.txt
cat /etc/hosts 1>out.txt 2>err.txt
cat /etc/hosts 2&>1>all.txt //就是把标准输出和错误错误输出都输出到all.txt