`
chenyubo
  • 浏览: 79790 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

重定向 1>&2 2>&1

    博客分类:
  • Unix
阅读更多
当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出.

在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是:

0: Standard Input (STDIN)

1: Standard Output (STDOUT)

2: Standard Error Output (STDERR)

在标准情况下, 这些FD分别跟如下设备关联:

stdin(0): keyboard  键盘输入,并返回在前端

stdout(1): monitor  正确返回值 输出到前端

stderr(2): monitor 错误返回值 输出到前端

举例说明吧:

当前目录只有一个文件 a.txt.

[root@redhat box]# ls

a.txt

[root@redhat box]# ls a.txt b.txt         

ls: b.txt: No such file or directory     由于没有b.txt这个文件, 于是返回错误值, 这就是所谓的2输出

a.txt     而这个就是所谓的1输出

再接着看:

[root@redhat box]# ls a.txt b.txt  1>file.out 2>file.err

执行后,没有任何返回值. 原因是, 返回值都重定向到相应的文件中了,而不再前端显示

[root@redhat box]# cat file.out

a.txt

[root@redhat box]# cat file.err

ls: b.txt: No such file or directory

一般来说, "1>" 通常可以省略成 ">".

即可以把如上命令写成: ls a.txt b.txt  >file.out 2>file.err

有了这些认识才能理解 "1>&2" 和 "2>&1".

1>&2  正确返回值传递给2输出通道 &2表示2输出通道

如果此处错写成 1>2, 就表示把1输出重定向到文件2中.

2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.

举个例子.

[root@redhat box]# ls a.txt b.txt 1>file.out 2>&1

[root@redhat box]# cat file.out

ls: b.txt: No such file or directory

a.txt

现在, 正确的输出和错误的输出都定向到了file.out这个文件中, 而不显示在前端.

补充下, 输出不只1和2, 还有其他的类型, 这两种只是最常用和最基本的.

分享到:
评论

相关推荐

    cmd命令的重定向输出 2>&1详解

    ### CMD命令的重定向输出 2>&1 详解 #### 一、概述 在Windows操作系统中,CMD(Command Processor)是用于执行各种命令的强大工具。它不仅能够执行基本的文件管理命令,还支持复杂的脚本编写及命令行操作。本文...

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

    ls xxx 1>out.txt 2>&1 nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对 于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制...

    Linux下重定向详解

    - `lsyouno 2>&1` 将命令`lsyouno`的标准错误输出重定向到标准输出。 - `lsyes 2>&1` 将命令`lsyes`的标准错误输出重定向到标准输出。 - `2>&1` 再次将这两个命令的标准输出合并,使得它们都通过管道传递给`egrep`。...

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

    如果写作 `command > out.file 2>&1`,首先 `>` 将标准输出重定向到 `out.file`,然后 `2>&1` 将标准错误重定向到标准输出的位置,也就是 `out.file`。相反,如果写作 `command 2>&1 > out.file`,标准错误先被...

    Bash中文件描述符的详细介绍

    例如,`cmd 3>&1 1>&2 2>&3 3>&-`这条命令会交换stdin和stdout,具体步骤如下: 1. 3>&1:将描述符3设置为与描述符1相同,即stdout。 2. 1>&2:将stdout(现在是3)设置为stderr。 3. 2>&3:将stderr设置为原来的...

    linux shell 中 2>&1的含义

    2. **`2>&1`**:这一部分将标准错误输出(文件描述符2)复制到标准输出(文件描述符1),因为标准输出已经重定向到`out.file`文件,所以标准错误也被重定向到同一文件。 3. **`&`**:表示这个命令在后台运行。 这样...

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

    ### Shell 重定向详解:“1>&2”、“2>&1”与“&>filename”的含义及区别 在Shell脚本编程中,理解不同类型的重定向及其功能是非常重要的。本文将详细解析三种重定向操作——“1>&2”、“2>&1”以及“&>filename”...

    Linux 命令 shell 重定向 >

    - `2>&1` 表示将错误输出(2)重定向到标准输出(1),这样错误信息也会被输出到屏幕或指定的文件。 - `&> filename` 是一个简化的形式,它同时将标准输出和错误输出都重定向到`filename`。 4. **输出打印不显示*...

    linux中的重定向问题

    ##### 示例2:正确使用`execlp()`实现重定向 ```c #include <unistd.h> int main() { execlp("/bin/sh", "sh", "-c", "cat abc.txt > xyz.txt", NULL); return 0; } ``` 在这个示例中,我们创建了一个新的shell...

    Linux重定向_All.pdf

    - "1>&2" 将标准输出重定向到标准错误的位置。 - "|" 是管道符号,它用来将一个命令的标准输出作为另一个命令的标准输入。 - "2>&-" 或 "2>&1" 是用来关闭标准错误输出。 - "0用来将文件作为标准输入重定向到命令中...

    lushuangyi#ucore-1#输入输出重定向1

    或者上述输出结果为i386-elf-objdump: command not found2>&1和1>&2运行下列代码,可以看出区别:2表示stderr, 1表

    Linux 运行jar包的几种方式

    例如,`nohup java -jar app.jar >log 2>&1 &`将标准输出和错误都定向到`log`文件,而`nohup java -jar app.jar 2>&1 >log &`则会导致标准输出先被重定向到屏幕,然后再将标准错误重定向到屏幕,这不是我们期望的...

    一文学会重定向.zip

    9. **历史记录重定向**:在shell脚本中,`exec`命令可以改变已打开的文件描述符,比如将stdout和stderr重定向到日志文件,然后执行命令:`exec > log.txt 2>&1`。 10. **重定向到/dev/null**:这个特殊的设备会丢弃...

    linux中的重定向.pdf

    6. "2>&1"操作符可以将标准错误输出重定向到标准输出的位置。例如,如果想同时捕获命令的标准输出和错误输出到同一个文件中,可以使用命令"ls /nonexistentdir &> alloutput"。 7. "操作符用于从键盘接收输入,但它...

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

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

    Linux下的输入/输出重定向.pdf

    这里首先将标准输出重定向到`all_lee`,然后`2>&1`将标准错误输出重定向到标准输出的当前位置,即`all_lee`文件。 总的来说,Linux的输入/输出重定向提供了灵活性,使得用户可以根据需要控制命令的输入和输出,这...

    cmd 和shell的重定向功能.docx

    然而,Shell通常使用`2>`和`2>>`来分别重定向错误输出,而不是CMD中的`2>&1`语法。 总结来说,CMD和Shell的重定向功能是强大且灵活的工具,它们允许用户在执行命令时自定义输入来源和输出目的地,这对于自动化脚本...

    linux的重定向命令应用及语法.docx

    command 2> error.log 1>&2 # 重定向标准输出到与标准错误相同的地方 command < input.txt > output.log 2> error.log # 从input.txt读取,输出到output.log,错误到error.log ``` 此外,还可以使用文件描述符来更...

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

    综合起来,`1>/dev/null 2>&1` 这个命令组合意味着,无论命令执行过程中产生了什么输出(无论是正常的输出还是错误信息),都不会显示在终端上,因为它们都被重定向到了`/dev/null`,相当于被清除了。这样的操作在...

    db2 v9重定向恢复

    ### DB2 V9重定向恢复详解 #### 一、引言 DB2是IBM公司推出的一款关系型数据库管理系统,广泛应用于各种大型企业级应用中。DB2 V9版本中的重定向恢复功能是一种高效的数据库恢复机制,它允许用户将数据恢复到与原始...

Global site tag (gtag.js) - Google Analytics