首页 > 代码库 > 一个Shell重定向的笔记
一个Shell重定向的笔记
文件描述符
进程读文件之前,需要先打开文件,进程打开文件的时候,Linux会把这个文件关联到一个数字(称之为文件描述符),文件描述符是打开的文件在进程表中的一个索引。每个进程都有自己的一组已经打开的文件和各自的文件描述符,一旦打开某个文件,进程就可以通过文件描述符进行读写该文件。当进程不在需要文件的时候,它必须关闭文件,并且释放文件描述符。
Linux进程在启动的时候会打开3个文件:标准输入(文件描述符0),标准输出(文件描述符1),标准错误(文件描述符2)。
子进程会继承父进程的文件描述符,可以使用命令
ls /proc/self/fd
查看当前已经打开的文件描述符
exec n> outfile 表示打开一个输入文件outfile,并将他关联到文件描述符n;
exec m< infile 表示打开一个输入文件infile,并将它关联到文件描述符m上;
<& 和 >&
<& 和 >& 是文件复制符号
使用 exec n<&m 表示打开或者重定向文件描述符n,将其作为输入文件m的一个副本。
使用 exec n>&m 表示打开或者重定向文件描述符n,将其作为输出文件m的一个副本。
一个实例:
exec 4<&0 #使用4保存标准输入的副本
exec < $1 #重定向标准输入到文件1
exec 7>&1 #使用7保存标准输出
exec > $2 #重定向标准输出到文件2
cat - | tr a-z A-Z #将标准输入转换成大小输出到标准输出
exec 1>&7 7>&- # 使用7恢复标准输出,并关闭7
exec 0<&4 4<&- # 使用4恢复 标准输入,并关闭4
一个Shell重定向的笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。