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 bash
set -uxe
echo "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 stdin
error
stdin
$ ./io.sh 2>stderr 1>&2 #将标准错误和标准输出重定向到stderr文件。
$ ./io.sh &>stderr #将标准错误和标准输出重定向到stderr文件,与第一个运行方式效果相同。
注意:>前后不要有空格。
$ cat stderr
error
stdin
$ ./io.sh &>/dev/null #标准输出和标准错误重定向到/dev/null设备

本文介绍了Linux shell脚本中的标准输入、输出和错误描述符,以及如何进行IO重定向。通过示例展示了如何将标准输出和错误输出重定向到文件,包括1>&2和2>&1的用法,以及使用&>将标准输出和错误输出同时重定向。最后,演示了如何将输出重定向到/dev/null设备以丢弃信息。

被折叠的 条评论
为什么被折叠?



