gpt4 book ai didi

linux - '2>&1' 和 '&>filename' 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:36 24 4
gpt4 key购买 nike

我是 Linux 初学者,我有一个关于重定向 STDOUT 和 STDERR 的问题。

  1. 创建一个file1来添加一些字符串

    echo hello > file1

    在此之后,当我做这样的事情

    cat file1 file2

    会报这样的错误

    hello
    cat: file2: No such file or directory
  2. 我想重定向 STDOUT 和 STDERR,所以

    cat file1 file2 > file3 2>&1 | cat
    hello
    cat: file2: No such file or directory
  3. 我知道 | 可以使用上一个命令的输出作为其输入,对吧?所以第一只 cat 的输出是:

    hello
    cat: file2: No such file or directory
  4. 现在,我找到了另一种重定向输出的方法,例如:

    cat file1 file2 &> file3
    cat file3
    hello
    cat: file2: No such file or directory
  5. 它可以做同样的事情,但是当我添加 |cat 时,结果是

    cat file1 file2 &> file3 | cat
    hello

    STDERR 在哪里?这意味着只有 hello 是第一个 cat 的输出?

2>&1&>file 有什么区别?

最佳答案

cat file1 file2

It will give an error like this

hello cat: file2: No such file or directory

该错误只是告诉您file2不存在。您使用重定向创建 file1:

echo hello > file1

现在file1存在。当您执行 cat file1 file2 时,cat 尝试将 file1file2 的内容输出到 stdout,但 file2 不存在(它告诉您)。要生成 file2,您可以执行 cat file1 > file2cat file1 的输出重定向到 file2,或者您也可以简单地 cp file1 file2。那么file2就会存在。

I want to redirect the STDOUT and STDERR, so

cat file1 file2 > file3 2>&1 | cat
hello
cat: file2: No such file or directory

同样,file2 仍然不存在。 catconcatenate 的缩写,仅将作为输入给出的文件内容输出到 stdout 除非重定向。 file1 包含 hello 因此它会与错误一起输出。 hello 被重定向到 file3,...并且...,由于您已将 stderr 重定向到 stdout(例如 2>&1),错误消息也会以 file3

结束

Linux shell 中的 | (管道)命令只是从左侧的命令中获取 stdout 并将其重定向到管道后面的命令的 stdin 。由于您已将 stdoutstderrcat file1 file2 重定向到 file3,因此不会向管道后面的 cat 发送任何内容。您发布的输出似乎来自:

cat file3

在 Linux shell 中,stdin、stdout 和 stderr 只是分别表示文件描述符 0、1 和 2 的特殊文件。文件系统中的实际文件是 /dev/stdin/dev/stdout/dev/stderr。如果您使用ls -l命令检查,您将看到文件和文件描述符之间的关系:

$ ls -l /dev/std*
lrwxrwxrwx 1 root root 4 Apr 2 17:47 /dev/stderr -> fd/2
lrwxrwxrwx 1 root root 4 Apr 2 17:47 /dev/stdin -> fd/0
lrwxrwxrwx 1 root root 4 Apr 2 17:47 /dev/stdout -> fd/1

关于linux - '2>&1' 和 '&>filename' 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com