`
panshaobinSB
  • 浏览: 204004 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux中2>&1的含义

 
阅读更多
http://bowen.blog.51cto.com/136148/94406

linux shell 中"2>&1"含义
脚本是:
      nohup /mnt/Nand3/H2000G  >/dev/null  2>&1  &
       对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
      command >out.file  2>&1 &
     command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行。
      
      试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

      你可以用
            ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
            ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
            ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
            ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。
      为何2>&1要写在后面?
      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 中 2>&1的含义

    ### Linux Shell 中 "2>&1" 的含义及应用 #### 基础概念 在Linux Shell环境中,标准输入(Standard Input, STDIN)、标准输出(Standard Output, STDOUT)和标准错误输出(Standard Error, STDERR)是非常重要的...

    详解nohup /dev/null 2>&1 含义的使用

    总结来说,`nohup` 命令与重定向操作符的组合,如 `nohup command > /dev/null 2>&1 &`,是 Linux 系统中常用的技术,用于在后台运行进程并丢弃所有输出,以确保进程的持续运行不受用户交互的影响。理解这些基本概念...

    linux shell 中 2>1的含义

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

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

    在Linux shell中,`2>&1` 是一个关键的输入/输出重定向操作符,用于合并标准错误输出(stderr)和标准输出(stdout)。本文将深入解析这一概念,并通过实例来帮助你理解其背后的原理。 首先,理解在Linux中,0、1、...

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

    在Shell脚本编程中,`>/dev/null 2>&1` 是一个常见的命令行操作,它的目的是将命令的输出(包括标准输出和标准错误)都重定向到一个特殊的地方——`/dev/null`,通常被称为“黑洞”或者“空设备文件”。这个文件的...

    linux中的重定向.pdf

    例如,如果想同时捕获命令的标准输出和错误输出到同一个文件中,可以使用命令"ls /nonexistentdir &> alloutput"。 7. "操作符用于从键盘接收输入,但它实际上是从一个称为here document的块中读取输入。例如,使用...

    [面试题答案]定时任务题目1

    例如:`*/5 * * * * ping -c 100 www.wanmei.com >/root/network.log 2>&1`,这条命令将每 5 分钟 ping 一次 www.wanmei.com 域名,并将结果写入 `/root/network.log` 文件中。 3.2 备份生产环境的定时任务 可以...

    linux 特殊符号含义

    在 Linux 中,有许多特殊符号和变量,它们具有特定的含义和用途。了解这些符号和变量的含义可以帮助我们更好地使用 Linux 系统和编写 Shell 脚本。 1. 变量说明 在 Linux 中,有许多特殊变量,它们可以在 Shell ...

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

    首先了解下1和2在Linux中代表什么 在Linux系统中0 1 2是一个文件描述符 名称 代码 操作符 Java中表示 Linux 下文件描述符(Debian 为例) 标准输入(stdin) 0 < 或 << System.in /dev/stdin -> /...

    Linux汇编语言AT&T开发指南

    Linux汇编语言AT&T开发指南涵盖了多种编程和系统开发中不可或缺的知识点,特别是对于在Linux环境下开发与底层硬件交互的程序。本指南详细介绍了AT&T汇编语法和指令的使用方法,下面将基于提供的内容点,逐一详细讲解...

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

    或者,如果希望同时保存正常输出和错误输出,可以使用`&>all_output.log`,这样两者都会被合并并保存到`all_output.log`文件中。 总之,理解Shell中的重定向是编写高效、可控脚本的关键。正确使用`>/dev/null 2>&1`...

    Linux运行jar包(Springboot).doc

    - `2>&1` 表示将标准错误输出重定向到标准输出,从而将两者合并到同一个文件中。 - `&` 表示在后台运行此命令,不会阻塞Shell,使得用户可以继续执行其他命令。 - `nohup` 意味着即使用户退出当前会话,进程仍将继续...

    linux操作系统(第2版))》课后习题答案.pdf

    1. 在 Linux 系统中,命令区分大小写。 2. 可以使用 Tab 键来自动补齐命令。 3. 可以使用分号来分隔命令,输入多条命令。 4. 可以使用反斜杠“\”来断开一个长命令行,增强命令的可读性。 六、 Vim 编辑器 1. Vim ...

    Linux中eclipse安装包

    2. **解压安装包**:Linux系统中常用tar命令来处理tar.gz格式的压缩文件。在终端中,切换到包含eclipse安装包的目录,然后输入以下命令进行解压: ``` tar -zxvf eclipse-java-luna-SR2-linux-gtk.tar.gz ``` 这...

    Linux自动清理日志文件方法

    上述Cron表达式的含义是:每天凌晨1点执行`/opt/soft/bin/auto-del-30-days-ago-log.sh`脚本,其中`> /dev/null 2>&1`用于忽略脚本执行时产生的任何输出信息,确保不会发送邮件提醒。 通过这种方式,我们可以轻松...

    linux 常见特殊符号

    典型应用:命令 > 文件名 命令 2> 文件名、命令 >/dev/null 2>/dev/null == 命令 > /dev/null 4. 2>> 错误重定向输出符号 用法:命令 2>> 文件名 特性:错误信息的追加 典型应用:命令 > 文件名 命令 2>> 文件名...

    Linux内核list&hlist;解读

    ### Linux内核list&hlist解读 #### 1. 前言 Linux 内核中广泛使用了链表作为数据结构,为了更好地管理和操作这些链表,内核提供了一系列宏来帮助...理解这些宏的含义及使用方法对于深入学习 Linux 内核源码至关重要。

    Linux中文man手册

    Linux中文man手册是一份专为中文用户设计的Linux命令参考文档,它包含了Linux系统中各种命令、函数、库和工具的详细说明。这份手册通常以HTML格式提供,方便用户在线浏览或离线阅读,尤其对于那些正在学习或工作中...

    linux 系统变量 PS1的简介.docx

    本文详细介绍了Linux系统中`PS1`变量的作用及其配置方法,并列举了常见特殊符号的含义。通过对`PS1`的合理配置,用户不仅能够获得更加个性化的命令行界面,还能提升工作效率。此外,了解其他提示符变量也有助于...

Global site tag (gtag.js) - Google Analytics