我是靠谱客的博主 陶醉大山,最近开发中收集的这篇文章主要介绍Linux文件描述符和输入输出重定向,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

环境:centos7.9

文件描述符

在执行一个shell命令是通常会自动打开3个标准文件,如下:

标准输入文件(STDIN,文件描述符为0):默认从键盘输入,也可以与重定向配合指定从文件或命令输入;
标准输出文件(STDOUT,文件描述符为1):默认输出到屏幕,也可以与重定向配合指定输出到文件;
错误输出文件(STDERR,文件描述符为2):默认输出到屏幕,也可以与重定向配合指定输出到文件;

STDIN对应/dev/stdin设备,STDOUT对应/dev/stdout设备,STDERR对应/dev/stderr设备;

输入输出重定向符号及作用

除了能从键盘输入和输出到屏幕,还应能从文件输入和输出到文件中保存信息,这就改变了原始的输出输出反向,这种改变就是重定向,重定向又分为输入重定向和输出重定向,而输出重定向又分为输出覆盖重定向和输出追加重定向。

command  < file				等价于 command  0< file			#将文件作为标准输入,即文件作为命令的标准输入,默认就是0,0可以不写
command  << delimiter  		等价于 command  << delimiter		#从标准输入中读入,直到遇到delimiter分隔符

command  > file				等价于 command  1> file			#将命令的标准输出内容覆盖到文件file,标准输入默认就是1,1可以不写
command  >> file						#命令的标准输出内容追加到文件末尾,默认就是1,1可以不写

command  2> file						#命令的错误输出内容覆盖到文件,错误输出必须要写文件描述符2
command  2>> file						#命令的错误输出内容追加到文件末尾,错误输出必须要写文件描述符2

command  > file 2>&1					# 2>&1意思是把 标准输出和错误输出 都重定向覆盖到 file文件
command  &>file 						#等价于上面一条,把 标准输出和错误输出 都重定向覆盖到 file文件

command  >> file 2>&1					# 2>&1意思是把 标准输出和错误输出 都重定向追加到 file文件
command  &>> file 						#等价于上面一条,把 标准输出和错误输出 都重定向追加到 file文件

还可以将标准输出和错误输出方便重定向到不同的文件:

command  >> file1  2>>file2 						# 标准输出重定向追加到 file1文件,错误输出重定向追加到 file2文件

演示示例:

test.txt文件是不存在的
ls /usr/local/apache/conf/ test.txt >>/stdout.txt  2>>stderr.txt        #标准输出内容追加到stdout.txt,错误输出内容追加到stderr.txt
ls /usr/local/apache/conf/ test.txt &>>/stdout.txt  					#表示标准输出和错误输出内容都追加到相同文件
ls /usr/local/apache/conf/ test.txt >>/stdout.txt  2>&1					#同上

总结

标准输入:stdin  	文件描述符	 0			<<<    0<0<<		标准输入默认就是0,0可以省略不写
标准输入:stdout   	文件描述符	 1			>>>	1>1>> 		标准输出默认就是1,1可以省略不写
错误输出:stderr		文件描述符	 2			>>>	2>2>> 		错误输出是2,2必须要写
2>&1&符号
ls -l /etc/* fu.txt  >>outInfo.txt 2>&1    							#表示把标准输出和错误输出信息内容都追加到outInfo.txt文件
ls -l /etc/* fu.txt  &>>outInfo.txt     							#等价于上一条
ls -l /etc/* fu.txt  >>outInfo.txt 2>>err.txt						#标准输出和错误输出内容分别追加到不同的文件
/dev/null 是一个无底洞,可以把不想要保留的信息丢进这个洞里  

最后

以上就是陶醉大山为你收集整理的Linux文件描述符和输入输出重定向的全部内容,希望文章能够帮你解决Linux文件描述符和输入输出重定向所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部