在linux中,0,1,2,/dev/null,>,>>的意思:

标准输入stdin的文件描述符为0

标准输出stdout的文件描述符为1

标准错误stderr的文件描述符为2

/dev/null为空设备,相当于垃圾桶

输出重定向符号为>

>为覆盖

>>为追加

2>1与2>&1的区别

2>1把标准错误stderr重定向到文件1中

2>&1把标准错误stderr重定向到标准输出stdout

示例:

test.sh

#! /bin/sh

t

date

标准输出重定向到log,标准错误输出到终端上

$ ls

test.sh

$ ./test.sh > log

./test.sh: 3: ./test.sh: t: not found

$ ls

log test.sh

$ cat log

2017年 06月 28日 星期三 09:30:39 CST

(删除log文件)标准输出重定向到log,标准错误重定向到文件1

$ ls

log test.sh

$ rm log

$ ls

test.sh

$ ./test.sh > log 2>1

$ ls

1 log test.sh

$ cat log

2017年 06月 28日 星期三 09:34:32 CST

$ cat 1

./test.sh: 3: ./test.sh: t: not found

(删除log文件及1文件)标准输出重定向到log,标准错误重定向到标准输出

$ ls

1 log test.sh

$ rm 1 log

$ ls

test.sh

$ ./test.sh > log 2>&1

$ ls

log test.sh

$ cat log

./test.sh: 3: ./test.sh: t: not found

2017年 06月 28日 星期三 09:36:49 CST

(删除log文件)标准输出重定向到空设备

$ ls

log test.sh

$ rm log

$ ls

test.sh

$ ./test.sh >/dev/null

./test.sh: 3: ./test.sh: t: not found

$ ls

test.sh

标准错误重定向到空设备

$ ls

test.sh

$ ./test.sh 2>/dev/null

2017年 06月 29日 星期四 14:23:41 CST

$ ls

test.sh

标准输出和标准错误全定向到空设备

$ ls

test.sh

$ ./test.sh >/dev/null 2>&1

$ ls

test.sh

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐