linux 命令默认从标准输入设备(stdio)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备是键盘。标准输出设备是终端(显示器)。
一般情况下,每个命令运行时都会打开3个文件:
- 标准输入文件(stdin):stdin的文件描述符为0。linux程序默认从stdin读取数据
- 标准输出文件(stdout):stdout的文件描述符为1。linux程序more相stdout输出数据。
- 标准错误文件(stderr):stderr的文件描述符为2。linux程序会向stderr流中写入错误信息。
输出输出重定向
/dev/null文件
/dev/null 是一个特殊的文件,写入到它内部的内容都会被丢弃。
示例:
$ date > date.txt #将date命令的结果重定向到文件date.txt
$ ll >> date.txt #将ll命令的结果追加到文件date.txt
$ cat < date.txt #将cat命令的输入重定向到文件date.txt。(即将文件date.txt的内容作为cat的参数)
$ cat < date.txt >date2.txt #将文件date.txt的内容重定向到文件date2.txt中
$ cat << EOF #将从键盘输入的字符串打印到显示器,直到输入EOF为止
$ ./test 2 > result.txt #将执行脚本test的错误信息重定向到文件result
$ ./test >> result.txt 2>&1 #将执行脚本test的错误信息和输出信息以追加的方式重定向到文件result.txt