暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux常用命令之文件描述符和重定向

Linux日常小实验 2019-01-05
374

实验环境:Centos7.4 

实验目的:掌握linux的文件描述符和重定向

实验步骤:

Linux系统中一切皆文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。


文件描述符用途stdio流
0标准输入stdin
1标准输出stdout
2标准错误stderr

重定向


# echo "U R a Smart man\!" >temp.txt

# cat temp.txt

U R a Smart man\!


清空temp.txt文件,并将文本内容写入到temp.txt文件。

# echo "I am a Smart man too\!" >>temp.txt

# cat temp.txt

U R a Smart man\!

I am a Smart man too\!

将文本内容追加到temp.txt文件。

重定向总结

<输入重定向符(截断模式)cmd < file从文件中读取数据(截断模式)

默认键

不常用

<<输入重定向符(追加模式)cmd << file从文件中读取数据(追加模式)
>输出重定向符(截断模式)cmd > file数据输出至文件中(截断模式)默认显示器
>>输出重定向符(追加模式)cmd >> file数据输出到文件中(截断模式)

输入输出操作均是依赖文件描述符实现,重定向输入输出的本质就是重定向文件描述符,<符号就是重定向0,>符号就是重定向1。什么情况下用重定向呢?不再显示器上输出,而是用文件或者设备代替输出的时候。

存在多个重定向,从左到右依次解析。

1、输入重定向

格式: [n]< word (注意[n]与<之间没有空格)

说明:将文件描述符 n 重定向到 word 指代的文件(以只读方式打开),如果n省略就是0(标准输入)

# cat <temp.txt

U R a Smart man\!

I am a Smart man too\!

I am a Smart man too \!

## cat  0<temp.txt  /*0被省略了,也可以写出来*/


 解析器解析到 "<" 以后会先处理重定向,将标准输入重定向到temp.txt,之后cat再从标准输入(也就是键盘)读取指令的时候,由于标准输入已经重定向到了file ,于是cat就从file中读取指令了。

2、输出重定向

格式: [n]> word

说明: 将文件描述符 n 重定向到word 指代的文件(以写的方式打开),如果n 省略则默认就是 1(标准输出),请参考重定向第一个例子,下面将其拷贝过来,方便读者。

# echo "U R a Smart man\!" >temp.txt

# cat temp.txt

U R a Smart man\!

标准输出重定向为temp.txt文件,而不是显示器。

3、 2>&1(注意:不能有空格)

将标准错误重定向到标准输出

4、&>file

标准输出和标准错误重定向到文件file,不显示错误和输出信息时,file为/dev/null,需要查看错误和输出信息时,file为具体文件名。

留个思考题:

1>&2 和2>&1 和 &>filename三个命令区别。

好了,今天就到这里吧,抱娃娃去喽

如果您喜欢我的文章,请长按以下图片关注我的公众号,学习Linux的路上,期待与您同行。


文章转载自Linux日常小实验,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论