Bash

重定向順序

  • June 8, 2020

我不太明白電腦是如何讀取這個命令的。

cat file1 file2 1> file.txt 2>&1

如果我理解,2>&1只需將標準錯誤重定向到標準輸出。

按照這種邏輯,命令向我顯示如下:

  1. 連接文件file1file2.
  2. stdout從此操作發送到file.txt.
  3. 發送stderrstdout.
  4. 結尾?

我不確定電腦在做什麼。按照我的邏輯,命令應該是

cat file1 file2 2>&1 > file.txt

但這不正確。

我發現使用作業更容易想到。

  • >就好像=
  • &就好像$

你從

1 = /dev/tty
2 = /dev/tty

那麼你的第一個例子1> file.txt 2>&1, 確實

1 = file.txt
2 = $1           # and currently $1 = file.txt

留給你

1 = file.txt
2 = file.txt

如果您以另一種方式進行操作,則再次開始

1 = /dev/tty
2 = /dev/tty

然後2>&1 > file.txt確實

2 = $1           # and currently $1 = /dev/tty
1 = file.txt

所以最終結果是

1 = file.txt
2 = /dev/tty

你只重定向了stdout,沒有stderr

引用自:https://unix.stackexchange.com/questions/37660