shell IO
shell脚本或者Linux终端上,常用的IO文件描述符有三个:
0 标准输入(stdin)1 标准输出 (stdout)2 标准错误 (stderr)
标准输入一般为键盘,标准输出和标准错误一般都是显示器。可以在shell脚本的后面添加 >filename,将标准输出重定向到文件中。
重定向
一般情况下,shell脚本的标准输出和标准错误都是输出到显示器上的,我们可以通过IO重定向,将标准输出和标准错误重定向其他文件或设备。
IO重定向的一般形式如下:
$ echo "hello,world" > filename$ echo "hello,world` 1>filename$ echo "some errors" 2>error
& 是一个描述符,如果1或2前不加&,会被当成一个普通文件。1>&2 意思是把标准输出重定向到标准错误.2>&1 意思是把标准错误输出重定向到标准输出。&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中
示例
#!/usr/bin/env bashset -uxeecho "error" >&2 #将error输出到标准出错echo "succ" >&1 #将succ输出到标准输出注意:2和1之前需要&,否则,其会被当作文件名,并且>前后不能有空格。
$ ./io.sh 2>stderr 1>stdin #将标准输出重定向到stdin文件,标准错误输出到stderr文件,注意,2与>,1与>之间没有空格。
$ ./io.sh 1>stdin 2>&1 #将标准错误和标准输出都重定向到stdin文件中。$ cat stdinerrorstdin
$ ./io.sh 2>stderr 1>&2 #将标准错误和标准输出重定向到stderr文件。$ ./io.sh &>stderr #将标准错误和标准输出重定向到stderr文件,与第一个运行方式效果相同。注意:>前后不要有空格。$ cat stderrerrorstdin
$ ./io.sh &>/dev/null #标准输出和标准错误重定向到/dev/null设备