shell------ I/O 重定向

文件描述符

默认情况下始终有3"文件"处于打开状态,stdin (键盘), stdout(屏幕), and stderr(错误消息输出到屏幕上)3个文件和其他打开的文件都可以被重定向。对于重定向简单的解释就是捕捉一个文件,命令, 程序,脚本, 或者甚至是脚本中的代码块的输出,然后将这些输出作为输入发送到另一个文件,命令, 程序,或脚本中.每个打开的文件都会被分配一个文件描述符stdin,stdout, stderr的文件描述符分别是0,1, 2对于正在打开的额外文件,保留了描述符39在某些时候将这些格外的文件描述符分配给stdin,stdout, 或者是stderr作为临时的副本链接是非常有用的。在经过复杂的重定向和刷新之后需要把它们恢复成正常的样子。


COMMAND_OUTPUT>

#重定向stdout到一个文件.

#如果没有这个文件就创建,否则就覆盖.

>filename

#> 会把文件"filename"截断为0长度.

#如果文件不存在,那么就创建一个0长度的文件('touch'的效果相同)

COMMAND_OUTPUT>>

#重定向stdout到一个文件.

#如果文件不存在,那么就创建, 如果存在,那么就追加到文件后边.


1>filename

#重定向stdout到文件"filename".

1>>filename

#重定向并追加stdout到文件"filename".

2>filename

#重定向stderr到文件"filename".

2>>filename

#重定向并追加stderr到文件"filename".

&>filename

#将stdout和stderr都重定向到文件"filename".


2>&1

#重定向stderr到stdout.

#得到的错误消息与stdout一样,发送到一个地方


i>&j

#重定向文件描述符i到 j.

#指向i文件的所有输出都发送到j中去.


>&j

#默认的,重定向文件描述符1(stdout)到j.

#所有传递到stdout的输出都送到j中去.


0<FILENAME

<FILENAME

#从文件中接受输入.

#与">"是成对命令,并且通常都是结合使用.

关闭文件描述符

n<&- 关闭输入文件描述符n.

0<&-,<&- 关闭stdin.

n>&- 关闭输出文件描述符n.

1>&-,>&- 关闭stdout.



exec

内建命令exec 是用来给文件分配一个文件描述符。使用

execfdN> file

分配文件描述符Nfile 进行输出:

execfdN< file

示例:

exec6<&0 # 将文件描述符#6stdin链接起来.

# 保存了stdin.

exec< data-file #stdin被文件"data-file"所代替.


reada1 # 读取文件"data-file"的第一行.

reada2 # 读取文件"data-file"的第二行.


echo

echo"Following lines read from file."

echo"-------------------------------"

echo$a1

echo$a2

exec0<&6 6<&-

# 现在将stdinfd#6中恢复,因为刚才我们把stdin重定向到#6,

#+然后关闭fd #6 ( 6<&-), 好让这个描述符继续被其他进程所使用.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值