PPFDT

  • per process file descriptor table
  • 每個 process 都有
  • 存放 file descriptors
    • file descriptors 是一個唯一的整數,用來識別作業系統上的 open file
  • 0, 1, 2 是 Standard input / ouput / error
  • 大小受限於 OPEN_MAX,亦即能同時間能開的最多檔案數

Redirection

Input redirection

  • $ wc < /etc/passwd
    • 把 wc 的 PPFDT 的 stdin 改成 /etc/passwd
    • 如果是 $ wc /etc/passwd,則是在 PPFDT 追加 /etc/passwd

Ouput redirection

  • $ wc > f1
    • 把 wc 的 PPFDT 的 stdout 改成 f1

Input & output redirection

兩個可以同時用

  • $ cat < f1 > f2
  • >> 可以 append
  • $ < f1 cat > f2
    • 可以亂換位置

Error redirection

  • $ find / -name f1 2> error 1> outputs
    • 這樣就會把那些 Permission denied 的給到 errors,成功的給到 outputs
  • 2>/dev/null
    • /dev/null 會把丟進來的東西都丟棄

Copy Descripter

  • 這兩者等價
    • $ cat f1 1>op_err 2>op_err
    • $ cat f1 1>op_err 2>&1
      • make 2 a copy of 1