文件描述符是与文件输入和输出的相关联的整数,它们用来追踪已打开的文件,文件描述符0,1,2是系统预留的。

    0 --> stdin (标准输入)

    1 --> stdout (标准输出)

    2 --> stderr (标准错误)

$ echo a1>a1
$ cp a1 a2;cp a2 a3
$ cat a*
cat: a1: Permission denied
a1
a1

将0定向到std.txt,将2定向到err.txt

$ cat a* >std.txt 2>err.txt

将0和1都定向到out.txt

$ cat a* >out.txt 2>&1.txt

tee命令

  将stdin重定向到文本中并且在屏幕打印出来。

$ cat a*|tee out.txt
cat: a1: Permission denied
a1
a1
$ cat out.txt
a1
a1

注意:out.txt并不包含“cat: a1: Permission denied”,因为它只能从stdin中进行读取。

默认的tee命令会将文件覆盖,但提供一个-a的选项用于追加。

$ cat a*|tee -a out.txt

重定向脚本内部的文本块
#/bin/bash
sqlplus /nolog <<EOF >log.txt
conn scott/tiger
select * from cat;
commit;
exit
EOF

<<EOF >log.txt和EOF之间的内容会被当做stdin,stdout会被重定向到log.txt。

自定义文件描述符

  •  创建一个文件描述符用于写入
$ exec >output.txt
$ echo newline >&
$ cat output.txt
newline
  • 创建一个文件描述符用于读取

$ echo hello >input.txt 
$ exec <input.txt
$ cat <&
hello

 

shell脚本学习总结01--文件描述符和重定向的更多相关文章

  1. 自学Linux Shell14.2-在脚本中使用其他文件描述符

    点击返回 自学Linux命令行与Shell脚本之路 14.2-在脚本中使用其他文件描述符 在脚本中重定向输入和输出,并布局限于以上讲的3个默认的文件描述符,shell最多可以有9个打开的文件描述符.这 ...

  2. 玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处:http://www.jbxue.com/arti ...

  3. Linux文件描述符与重定向

    文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 当Linux启动的时候会默认打开三个文件描述符,分别是: 标 ...

  4. Linux系统学习笔记:文件描述符标志

    文件描述符标志的概念 文件描述符标志(目前就只有一个close-on-exec): 它仅仅是一个标志,当进程fork一个子进程的时候,在子进程中调用了exec函数时就用到了这个标志.意义是执行exec ...

  5. shell文件描述符和重定向

    1.文件描述符是与一个打开的文件或数据流相关联的整数.文件描述符0,1,2是系统预留的. 0 --------stdin(标准输入) 1 --------stdout(标准输出) 2--------- ...

  6. shell脚本学习之6小时搞定(6)-重定向及其他

    shell学习之-重定向及其他 目录 shell学习之-重定向及其他 1.输出重定向 2.输入重定向 3.重定向深入讲解 4./dev/null 文件 5.awk Unix 命令默认从标准输入设备(s ...

  7. linux专题一之文件描述符、重定向、管道符、tee命令

    本节讨论一下几个问题: 1. 文件描述符. 2. 重定向. 3. 管道符 4. tee的用法. 1. 文件描述符. 在linux系统中一切皆文件.文件夹和设备都是文件.如何用来区别不同的文件呢?这里的 ...

  8. Linux 文件描述符和重定向

    200 ? "200px" : this.width)!important;} --> 介绍 文件描述符是与文件输入.输出相关联的整数,在编写脚本时会经常使用标准的文件描述符 ...

  9. 【Linux】文件描述符与重定向

    重定向符号 符号 描述 > 输出重定向到一个文件或设备 覆盖原来的文件 >! 输出重定向到一个文件或设备 强制覆盖原来的文件 >> 输出重定向到一个文件或设备 追加原来的文件 ...

随机推荐

  1. Ubuntu下安装使用Xfce4

    编辑于 2007-05-05 21:30   安装:  代码: sudo  apt-get  install  xfce4  xfce4-taskbar-plugin     (xfce4-taskb ...

  2. 10 分钟实现一个自己的server监控器

    需求 近期须要给自己的server加入监控器.目的是监控server的内存.CPU.磁盘占用率,资源占用率过高的话能给自己发个提醒.当前主流的平台通常会提供邮件.短息.甚至会提供微信提醒,只是这类提醒 ...

  3. memset 与 memcpy

    1. memset 需要的头文件 在C中 <string.h> 在C++中 <cstring> 原型: void *memset(void *s, int ch, size_t ...

  4. 将相关数据拼成所需JSON数据

    参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html 有时候我们需要将一些数据拼装成所需要格式的JSON,可以使用如下方法,本人觉得还是比较方便 ...

  5. Sql UNION 合并多个结果集并排序

    1.建表语句及测试数据: --创建表A CREATE TABLE A( A1 int NULL, A2 nvArchAr(50) NULL, A3 decimAl(18, 0) NULL ) --测试 ...

  6. Eclipse的vim插件viPlugin的安装

    1.viPlugin是什么?   viPlugin是一个eclipse 针对vi的插件,使用此插件可以让你在使用eclipse进行编码时使用几乎所有vi命令,可以极大的提高开发编码效率. 2.viPl ...

  7. 在iOS App中增加完整的照片多选功能

    转自:http://blog.csdn.net/jasonblog/article/details/8141850 主要参考了ELCImagePickerController,不过由于UI展现上需要定 ...

  8. 李洪强iOS开发之数据存储

    李洪强iOS开发之数据存储 iOS应用数据存储的常用方式 1.lXML属性列表(plist)归档 2.lPreference(偏好设置) 3.lNSKeyedArchiver归档(NSCoding) ...

  9. 实现在edittext中任意插入图片

    Myedittext: public class MyEditText extends EditText { public MyEditText(Context context) { super(co ...

  10. VS2015配置Linux开发远程调试

    # VS2015配置Linux开发远程调试 ### 简介-----------------------------vs2015支持跨平台开发 ### 软件环境--------------------- ...