Io-Redirection

重定向。什麼是“<>”、“<&”和“>&-”?

  • April 11, 2021

&lt;&gt;– 幾個月前我在一個網站上看到的這個運算符,但我不記得它是什麼意思。也許我錯了,而 ksh 沒有&lt;&gt;.

a&lt;&b– 我知道這個運算符將輸入流a與輸出流合併b。我對嗎?但我不知道我可以在哪裡使用它。你能給我舉個例子嗎?

&gt;&-——我對此一無所知。例如,是什麼2&gt;&-意思?

來自http://www.manpagez.com/man/1/ksh/

  &lt;&gt;word        Open file word for reading and writing as  standard  out-
                put.

  &lt;&digit       The standard input is  duplicated  from  file  descriptor
                digit  (see  dup(2)).   Similarly for the standard output
                using &gt;&digit.

  &lt;&-           The standard input is closed.  Similarly for the standard
                output using &gt;&-.

您將通過鍵入找到所有這些詳細資訊man ksh

特別2&gt;&-是:關閉標準錯誤流,即命令不再能夠寫入STDERR,這將打破要求它可寫的標準。


要了解文件描述符的概念,*(如果在 Linux 系統上)*您可以查看/proc/*/fd (and/or /dev/fd/*)

$ ls -l /proc/self/fd
insgesamt 0
lrwx------ 1 michas users 1 18. Jan 16:52 0 -&gt; /dev/pts/0
lrwx------ 1 michas users 1 18. Jan 16:52 1 -&gt; /dev/pts/0
lrwx------ 1 michas users 1 18. Jan 16:52 2 -&gt; /dev/pts/0
lr-x------ 1 michas users 1 18. Jan 16:52 3 -&gt; /proc/2903/fd

文件描述符 0(又名 STDIN)預設用於讀取,fd 1(又名 STDOUT)預設用於寫入,fd 2(又名 STDERR)預設用於錯誤消息。(在這種情況下,fd 3 用於ls實際讀取該目錄。)

如果你重定向東西,它可能看起來像這樣:

$ ls -l /proc/self/fd 2&gt;/dev/null &lt;/dev/zero 99&lt;&gt;/dev/random |cat
insgesamt 0
lr-x------ 1 michas users 1 18. Jan 16:57 0 -&gt; /dev/zero
l-wx------ 1 michas users 1 18. Jan 16:57 1 -&gt; pipe:[28468]
l-wx------ 1 michas users 1 18. Jan 16:57 2 -&gt; /dev/null
lr-x------ 1 michas users 1 18. Jan 16:57 3 -&gt; /proc/3000/fd
lrwx------ 1 michas users 1 18. Jan 16:57 99 -&gt; /dev/random

現在預設描述符不再指向您的終端,而是指向相應的重定向。(如您所見,您還可以創建新的 fd。)


再舉一個例子&lt;&gt;

echo -e 'line 1\nline 2\nline 3' &gt; foo # create a new file with three lines
( # with that file redirected to fd 5
 read &lt;&5            # read the first line
 echo "xxxxxx"&gt;&5    # override the second line
 cat &lt;&5             # output the remaining line
) 5&lt;&gt;foo  # this is the actual redirection

你可以做這樣的事情,但你很少必須這樣做。

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