2019/11/26
file descriptor redirection 與 process substitution
是這樣的這邊有個需求想要把 stdout 與 stderr 分別導向至不同的檔案中
這個很簡單
透過 bash 中 > 即可達成
再來 stdout 的 fd 是 1, 而 stderr 的 fd 是 2
組合起來就是
```
command 1> out.log 2> err.log
```
而預設導向的 fd 是 1
於是乎又可以寫成
```
command > out.log 2> err.log
```
接下來變化來了
需求是:
除了把 stdout 與 stderr 分別導向至不同的檔案中, 也要將 stdout 與 stderr 導入至同一個檔案, 並且印出順序要一致
這就會需要用到 process substitution
```
>(list)
# 或
<(list)
```
指令 list 會以非同步方式執行
加上利用 tee 同時導入至檔案與印在螢幕上
組合技如下:
```
command > >(tee stdout.log >> all.log) 2> >(tee stderr.log >> all.log)
```
訂閱:
文章 (Atom)