计算机系统应用教程网站

网站首页 > 技术文章 正文

关于2>&1重定向的详细解释

btikc 2024-09-03 11:23:50 技术文章 12 ℃ 0 评论

在POSIX shell中,命令的结果可以通过%>的形式来定义,其中%表示文件描述符:1为标准输出stdout、2为标准错误stderr。系统默认%值是1,也就是1>,而1>可以简写为>,也就是默认为>。

stdout和stderr的默认目标是终端,比如:

#xxxxx

-bash: xxxxx: command not found

错误信息显示在终端上,而对于telnet等就是虚拟终端。

(1)输出重定向到文件file,终端上只能看到标准错误:

#./run.sh >file

#./run.sh 1>file

#more file

aaa

bbb

ccc

(2)错误重定向到文件file,终端上只能看到标准输出:

#./run.sh 2>file

#more file

./run.sh: line 10: /root/t.sh: 没有那个文件或目录

(3)标准输出和标准错误都重定向到file,终端上看不到任何信息:

#./run.sh >file 2>&1 (等同于#./run.sh 1>a1 2>&1)

#more file

aaa

bbb

ccc

./run.sh: line 10: /root/t.sh: 没有那个文件或目录

其中&的意思,可以看成是“和...相同”的意思。本例中就是2>和1>一样,都输出到file中。

(4)一个特别的例子:

#./run.sh 2>&1 >file

可以解释为2>和1>一样,因为1>是系统默认输出到终端的,所以标准错误也输出到终端,而系统把标准输出重定向到文件file。

#more file

aaa

bbb

ccc

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表