重定向

重定向

作用:改变输入输出的位置

文件描述符

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(定义标准输入的结束标志)

 

posted @ 2018-06-01 15:32  litby  阅读(336)  评论(0)    收藏  举报