Shell I/O重定向与exec的使用介绍

注:该文章例子来自于网络的收集和整理,附带本人注解。

①I/O重定向的常用用法

符号             意义
cmd1 | cmd2     管道符,将cmd1的标准输出作为cmd2的标准输入。
> filename      将标准输出写到文件filename之中。
< filename      将文件filename的内容读入到标准输入之中。
>>filename      将标准输出写到文件filename之中,若filename文件已存在,则将标准输出追加到filename已有内容之后。
>|filename      即使noclobber选项已开启,仍然强制将标准输出写到文件filename之中,即将filename文件覆盖掉。

n>|filename     即使noclobber选项已开启,仍然使用FD为n以截断模式打开文件filename。
n> filename     使用FD为n以截断模式打开文件filename。
n< filename     使用FD为n以读取模式打开文件filename。
n>>filename     使用FD为n以追加模式打开文件filename。
<< delimiter    此处文档(Here-document)。

②exec命令的介绍

1,通过文件描述符打开或关闭文件。
2,将文件重定向到标准输入,及将标准输出重定向到文件。
3exec命令重新设置了I/O重定向,要恢复为原来的I/O指向,还得需要使用exec命令显示指定。
exec用法:
&n  :代表描述符代表的文件。
> < :代表以什么形式使用描述符。
exec 8<&2 :描述符8以读取方式打开标准错误对应的文件。
exec &>log:把标准输入错误打开文件logexec 8<&- :关闭描述符8

1):run.sh脚本使用exec将stdin(标准输入)重定向到文件

root@37C:~# cat run.sh
#!/bin/bash
exec 8<&0         # 标准输入默认是指向了键盘,复制一份到 8 中,8 也指向了键盘。
exec 0< hfile     # 1. 使用标准输入打开文件hfile。
read a            # 2. read 将从stdin中读取命令。
read b                
echo "---------------------------"
echo $a
echo $b
echo "Close FD 8:"      
exec 0<&8 8<
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值