Linux标准输入输出
linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2
以后打开文件后。新增文件绑定描述符 可以依次增加。 一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。
原文地址:
linux shell数据重定向(输入重定向与输出重定向)详细分析 - 程默 - 博客园
http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html
一个命令执行了:
先有一个输入:输入可以从键盘,也可以从文件得到
命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕
命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕
文件输入输出由追踪为一个给定的进程所有打开文件的整数句柄来完成。这些数字值就是文件描述符。最为人们所知的文件米描述符是 stdin, stdout 和stderr,文件描述符的数字分别是0,1和2。这些数字和各自的设备是保留的。一个命令执行前,先会准备好所有输入输出,默认分别绑定(stdin,stdout,stderr),如果这个时候出现错误,命令将终止,不会执行。命令解析过程,可以参考:Linux Shell 通配符、元字符、转义符使用实例介绍
这些默认的输出,输入都是linux系统内定的,我们在使用过程中,有时候并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时候我们就需要进行输出重定向了。
linux shell下常用输入输出操作符是:
1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin
2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr
记录一段代码。
1 #!/bin/sh 2 # 检查脚本的运行参数,如果参数不等于两个,则退出脚本 3 if [ ! $# -eq 2 ]; then 4 echo "Usage: Need parameters! Run: $0 2015 10 02" 5 exit 6 fi 7 #执行代码 8 echo "Para1: $0 " #所执行的脚本名称 9 echo "Para2: $1 " #所执行的脚本第一个参数 10 echo "Para3: $2 " #所执行的脚本第二个参数 11 echo "Para4: $3 " #所执行的脚本第三个参数 12 echo "Para10: ${10} " #所执行的脚本第十个参数 13 echo "Para11: ${11} " #所执行的脚本第十一个参数 14 echo "Para5: $# " #所执行的脚本参数个数 15 echo "Para6: $? " #上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值 16 echo "Para7: $@ " #传递给脚本参数列表,使用空格分隔每个参数,组成一个字符串 17 echo "Para8: $* " #脚本参数列表,作为一个参数组,使用时加引号 18 echo "Para9: $$ " #所执行脚本的当前进程ID 19 echo "Para1: $- " #显示Shell使用的当前选项,与set命令功能相同。 20 echo "Para2: $! " #后台运行的最后个进程ID