文件中常用的重定向:

command > filename把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中 (追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中 (追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中 (追加)
command < filename >filename2   把命令以 filename文件作为标准输入,以 filename2文件作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到 delimiter分界符
command <&m 把把文件描述符 m作为标准输入
command >&m 把把标准输出重定向到文件描述符 m中
command <&- 把关闭标准输入

需要明确的一点是可以使用exec命令通过文件描述符打开和关闭文件。

>&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;如果n之前&那么n则被理解成文件的名字,当表明是文件描述符时需要加上&

<&n 标准输入复制自文件描述符 n;

<&- 关闭标准输入(键盘);

>&- 关闭标准输出;

n<&- 表示把 n 号输入关闭;

n>&- 表示把 n 号输出关闭;

exec 1>outfilename # 打开文件outfilename作为stdout。可以理解为把标准输出的东西都定向到outfilenam 中

exec 2>errfilename # 打开文件 errfilename作为 stderr。

exec 0<&- # 关闭 FD0。

exec 1>&- # 关闭 FD1。

exec 5>&- # 关闭 FD5。

下面来看一个小例子:

 exec <& <desc

 read line1

 exec <&
echo $line1 echo -n "please input number :"
read line2
echo $line2

desc可以推断出是一个文件

第一行的意思是把文件描述符0(标准输入)定向到文件描述符4,相当于把文件描述符0备份了一份保存在4中,然后把文件定向到文件描述符0,则以后的标准输入都是从文件desc中读取。

第三行 读入一行

第五行 原来是从desc中读,现在从文件描述符4中读,文件描述符4中保存的是原来文件描述符0的东西,所以现在从标准输入读(键盘)

第十行 从标准输入

exec 重定向的更多相关文章

  1. (转)linux exec与重定向

    原文:http://xstarcd.github.io/wiki/shell/exec_redirect.html linux exec与重定向 exec和source都属于bash内部命令(buil ...

  2. 【原创】java中的父进程子进程 —— 坑爹的java Runtime.getRuntime().exec

    最近有一个需求,需要用一个java进程启动多个子进程来完成并发任务.由于必须给用户完成任务的反馈,所以需要父进程记录子进程的生命周期. exec方法返回一个Process对象,在当前进程内调用该对象的 ...

  3. Bash : IO 重定向

    标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端(输出结果的地方)已经报告问题的地方,它们分别被称为标准输入(stand ...

  4. linux shell脚本编程笔记(五): 重定向

    I/O重定向 简述: 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其 ...

  5. CentOS下输入输出重定向

    nux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linux默认输入 ...

  6. 学习 Linux,101: 自定义或编写简单脚本【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-lpic1-105-2/index.html 学习如何使用标准的 shell 语法.循环和控制结构,以及 ...

  7. Bash内置命令exec和重定向

    Bash内置命令exec可以替换当前程序而不需要启动一个新的进程,可以改变标准输入和输出而不需要启动一个新的子进程.如果文件用exec打开,read命令就会把文件指针每次指向下一行直到文件的末尾,如果 ...

  8. Shell重定向与exec

    前言 首先我们需要知道exec是什么,exec是linux下面一个创建进程的方法,详情请参考:https://www.cnblogs.com/guge-94/p/11016176.html 重定向 概 ...

  9. bash的管道符与重定向

    管道符"|"可以用来将前面的程序的标准输出stdout(=1)重定向到后一个程序的stdin(=0),但是忽略了stderr. 在bash中使用2>&1 可以表示将s ...

随机推荐

  1. 【Android基础】单元测试的配置

    1.在AndroidManifest清单文件中进行配置 <application android:allowBackup="true" android:debuggable= ...

  2. Android设计模式(十)--生成器模式

    回头看自己写的东西,大概Android当自己控制的定义,编写代码适用性比较高.但是,看看没有什么技术含量,因此,当在学习设计模式,想想有些东西是否可以改善,例如: 自己定义Dialog是Android ...

  3. 基于高性能的硬件配置Nginx

    Nginx高级配置将涉及硬件,假设你配置不好,直接使各种性能下降. 我这里总结一下.怎样依据server的硬件设备来配置Nginx. 见下图: 低訪问量的网络,能够这样配置. 标准的网络訪问量,能够这 ...

  4. 使用jquery点击一个实现button或连接,进行以下div显示,在点击隐藏

    jquery代码: <script type="text/javascript" src="js/jquery-1.7.2.js"></scr ...

  5. JAVA在IO流量汇总

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42119261 我想你对JAVA的IO流有所了解,平时使用的 ...

  6. StackExchange.Redis 使用-发布订阅 (二)

    使用Redis的发布订阅功能 redis另一个常见的用途是发布订阅功能 . 它非常的简单 ,当连接失败时 ConnectionMultiplexer 会自动重新进行订阅 . ISubscriber s ...

  7. js实现鼠标拖拽div-------Day44

    假设去问这样一个问题"你认为鼠标操作简单,还是键盘操作简单",相信会有多数人都会回答鼠标吧,毕竟键盘button那么多,假设手小了或者手法不规范了,太easy出问题了,也对操作的速 ...

  8. celery最佳实践

    作为一个Celery使用重度用户.看到Celery Best Practices这篇文章.不由得菊花一紧. 干脆翻译出来,同一时候也会添加我们项目中celery的实战经验. 至于Celery为何物,看 ...

  9. js 自己容易搞混的笔记查询

    相似的操作 var str2 = "0123456789"; console.log(str2.slice(4,7)); //------------"456" ...

  10. 有关XCode6(iOS8)UITableViewCell与iOS7在UITableViewCell问题

    简而言之: iOS6在cell的层次关系2层,但在iOS7层次结构成为3层,但在iOS8的SDK在UITableViewCell层次结构发生了变化2层. 如果它们是UITableViewCell加入到 ...