> và 2>&1Chuyển hướng được xử lý trái sang phải, và 2>&1 nghĩa là "fd 2 trỏ tới đích hiện tại của fd 1" — chứ không phải "luôn theo fd 1".
Hai lệnh sau khác nhau:
cmd > file 2>&1: trước hết fd 1 → file; rồi fd 2 → đích hiện tại của fd 1 = file. → cả hai vào file.cmd 2>&1 > file: trước hết fd 2 → đích hiện tại của fd 1 = terminal; rồi fd 1 → file. → stdout vào file, stderr vẫn ra terminal.Cho thứ tự hai toán tử, in đích cuối cùng của fd 1 và fd 2. Đích ban đầu của cả hai là terminal; file là file.
Ví dụ I/O: > file 2>&1 → fd1=file, fd2=file.
Một dòng: hai token theo thứ tự, mỗi token là >file (fd1→file) hoặc 2>&1 (fd2→đích hiện tại fd1). Cách nhau bởi dấu cách.
Đúng 2 token.
Dòng 1: fd1=<đích>. Dòng 2: fd2=<đích>.
Ví dụ:
Đầu vào:
>file 2>&1
Đầu ra:
fd1=file
fd2=file
Giải thích:
Đang tải editor...