重定向
重定向
作用:改变输入输出的位置
文件描述符
linux启动后,会默认打开3个文件描述符,分别是:标准输入:standard input 0,标准输出:standard output 1,错误输出:error output 2
以后打开文件后。新增文件绑定描述符 可以依次增加。 一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。
一个命令执行了:
标准输入默认从键盘得到,也可以从文件得到
命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕

命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕

重定向格式和分类
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、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。
2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。
3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。
4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。
5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行
对于标准输入的重定向
cat命令可以获得标准输入,默认是键盘输入

cat > /tmp/test2 < /tmp/test1
该命令的作用内容是将标准输入重定向为文件输入,即输入/tmp/test1到标准输出,再将标准输出重定向到/tmp/test1
还有一种做法:
cat > /tmp/test << end(定义标准输入的结束标志)


浙公网安备 33010602011771号