Shell中的文件重定向

重定向指的是改变程序运行的输入来源和输出地点。
这里写图片描述

重定向标准输出

cat file | sort 1 > sort.out 
cat file | sort >sort.out  #这两个命令等同
pwd >> path.out #追加
nullfile.txt    #如果想创建一个长度为0的空文件,可以用' > f i l e n a m e ':

重定向标准输入

  • eg1: sort < file将file的内容输入到sort进行排序,排序后的结果sort命令输出
    sort < name.txt > name.out
  • eg2:分隔符用法 —表示结合cat命令从标准输入输入内容到指定文件,遇到指定内容结束输入操作
    这里写图片描述

重定向标准错误

eg:$ grep "trident" missiles 2>/dev/null
在这个例子中,grep命令在文件missiles 中搜索trident字符串,如果出错,错误信息会重定向到/dev/null。

结合使用标准输出和标准错误

eg:$ cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err
脚本/命令的正常输出和错误信息重定向到不同的文件中。

eg: grep “standard” standard.txt >grep.out 2>&1
脚本/命令的正常输出和错误信息都重定向到同一个文件中。

注意:shell是从左至右分析相应的命令

exec和文件描述符在一起

  exec命令可以用来代替当前shell;换句话说,并没有启动子shell,使用这一命令时,任何现有环境都将被清除,并重新启动一个shell。
  exec commandcommand通常是一个shell脚本。测试执行完该命令后,需要重新登录shell,然后export声明的变量都失效了。
  exec命令对文件描述符进行操作时,它不会覆盖你的当前的shell。

#!/bin/bash
exec 3<&0 0<name.txt 
read line1
read line2
exec 0<&3

echo $line1
echo $line2

实现文件描述符3缓存标准输入(文件描述符为0),然后将指定文件重定向到标准输入,在操作完指定文件以后,再从缓存文件(3)恢复标准输入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值