shell重定向的顺序问题
三个默认的文件描述符
0: stdin(标准输入)
1: stdout(标准输出)
2: stderr(标准错误输出)
系统中这3个文件描述符所对应的文件:

重定向顺序
示例脚本
echo "hello world"
echo "xxx"
sh test.sh
hello world
xxx
sh test.sh >/tmp/out
$ cat /tmp/out
hello world
xxx
sh -x test.sh >/tmp/out 2>/tmp/err
stdout和stderr分别被重定向到/tmp/out和/tmp/err。
$ cat /tmp/out
hello world
xxx
$ cat /tmp/err
+ echo 'hello world'
+ echo xxx
sh -x test.sh 2>&1 >/tmp/out
stdout被重定向到/tmp/out,stderr被重定向到stdout。因为在执行2>&1的时候,stdout对应的文件为/dev/pts/2,所以stderr的输出仍为stdout,后面的stdout被重定向到/tmp/out。
$ sh -x test.sh 2>&1 >/tmp/out
+ echo 'hello world'
+ echo xxx
$ cat /tmp/out
hello world
xxx
文件描述符、打开的文件句柄以及i-node之间的关系
总结
从左向右检查每个重定向,前面的重定向会影响后面的。
shell重定向的顺序问题的更多相关文章
- shell重定向命令执行顺序
重定向内容介绍 一条shell命令的执行包含三个文件描述符:标准输入(键盘等) stdin 0,标准正确输出(屏幕等) stdout 1,标准错误输出(屏幕等)stderr 2 通过重定向可以指定 ...
- shell 环境初始化顺序
登陆shell 的执行顺序 /etc/profile /etc/profile.d/file /etc/bashrc .bashrc .bash_profile 非登录shell 的执行顺序, 例如: ...
- shell重定向调试信息
shell重定向调试信息 fulinux ******************************************************************************* ...
- shell重定向介绍及使用
我们在写脚本或用脚本时,往往会发现 > /dev/null 2>&1 这类的命令.之前都是简单的了解一下,并没有深度消化,直到自己写脚本时,不认真写成了2>&1 &g ...
- linux shell 执行命令顺序
1.shell命令搜索顺序 在linux shell 中输入一个命令,如果有多个同名指令,shell需要按照一定规则去取优先级高的一个执行,shell命令的搜索顺序为: 1.别名,使用alias创建的 ...
- Shell重定向:2>&1
Shell重定向:2>&1 0 是一个文件描述符,表示标准输入(stdin) 1 是一个文件描述符,表示标准输出(stdout) 2 是一个文件描述符,表示标准错误(stderr) 重定 ...
- shell重定向输出的应用
shell重定向输出的应用 案例2:重定向输出的应用 2.1问题 本例要求编写一个脚本/root/out.sh,功能特性如下: 执行此脚本显示I love s ...
- shell 重定向以及文件描述符
1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入 ...
- 18 shell 重定向以及文件描述符
1.对重定向的理解 2.硬件设备和文件描述符 文件描述符到底是什么 3.Linux Shell 输出重定向 4.Linux Shell 输入重定向 5.结合Linux文件描述符谈重定向 6.Shell ...
随机推荐
- centos7 安装PHP5.3 报错undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
系统:centos 7 原有PHP版本:5.6.27,5.4.45 试着安装nginx+多php版本,首先安装了5.6和5.4的版本,一帆风顺,但是在安装5.3.29版本时,出现问题了,configu ...
- HTML CSS + DIV实现排版布局
HTML CSS + DIV实现排版布局 1.网页可以看成是由一个一个"盒子"组成,如图: 由上图可以看出,页面分为上(网站导航).中.下(版权声明)三个部分,中间部分又分为左(商 ...
- Python 定时任务框架 APScheduler 详解
APScheduler 最近想写个任务调度程序,于是研究了下 Python 中的任务调度工具,比较有名的是:Celery,RQ,APScheduler. Celery:非常强大的分布式任务调度框架 R ...
- spring mvc 初始
今天带领大家开始第一天的spring mvc学习 首先我们要下载maven然后配置IDE 然后选择new 新建项目 然后选择maven,然后选择maven的webapp 然后创建springmvc ...
- 如何在原生Android项目里嵌入Cordova
背景: 这段时间在维护一个Cordova混合项目,以前稍微接触过Cordova,也写过简单的纯纯的Cordova的Demo,但是没有尝试过混合原生的Cordova. 在接到项目后比较了一下项目架构和C ...
- PHP 3DES 加解密(CBC模式,pkcs5padding填充)
1.前言:项目中接入第三方支付遇到3DES加密,以前也没用过,搜了好多,都不适用,各种不对,后来自己结合搜到的终于弄正确了,检测地址:http://tool.chacuo.net/crypt3des. ...
- POJ3641 Pseudoprime numbers (幂取模板子)
给你两个数字p,a.如果p是素数,并且ap mod p = a,输出“yes”,否则输出“no”. 很简单的板子题.核心算法是幂取模(算法详见<算法竞赛入门经典>315页). 幂取模板子: ...
- 将excle表中得数据生成insert语句插入到数据库中
第一步:输入公式 第二步:拽住右下角得+往下拖拽
- Java泛型方法和构造函数
可以在方法声明中定义类型参数,它们在方法的返回类型之前的尖括号中指定.包含泛型方法声明的类型不必是通用类型.可以在非静态方法声明中使用为泛型类型指定的类型参数. 示例 以下代码显示如何为方法m1()定 ...
- 逻辑回归原理,推导,sklearn应用
目录 逻辑回归原理,推导,及sklearn中的使用 1 从线性回归过渡到逻辑回归 2 逻辑回归的损失函数 2.1 逻辑回归损失函数的推导 2.2 梯度下降法 2.3 正则化 3 用逻辑回归进行多分类 ...