在腳本中重定向輸入和輸出,並佈局限於以上講的3個默認的文件描述符,shell最多能夠有9個打開的文件描述符。這節介紹在腳本中使用其餘文件描述符。linux
Shell 中對文件描述符的操做由三部分組成: (Left, Operation, Right):shell
當存在多個文件描述符的操做時, 會按照從左往右的順序依次執行. 例如經過命令佈局
1 cmd 3>&1 1>&2 2>&3 3>&-
就能夠交換 stdin 和 stdout.spa
exec命令用於調用並執行指令的命令。exec命令一般用在shell腳本程序中,能夠調用其餘的命令。若是在當前終端中使用命令,則當指定的命令執行完畢後會當即退出終端命令行
exec用法:code
lsof會列出整個linux系統打開的全部文件描述符,,命令爲隱藏狀態。
不少的linux系統中(如Fedora),lsof命令位於/usr/sbinhtm
1 lsof 2 command PID USER FD type DEVICE SIZE NODE NAME 3 init 1 root cwd DIR 8,2 4096 2 / 4 init 1 root rtd DIR 8,2 4096 2 / 5 init 1 root txt REG 8,2 43496 6121706 /sbin/init 6 init 1 root mem REG 8,2 143600 7823908 /lib64/ld-2.5.so 7 init 1 root mem REG 8,2 1722304 7823915 /lib64/libc-2.5.so 8 init 1 root mem REG 8,2 23360 7823919 /lib64/libdl-2.5.so 9 init 1 root mem REG 8,2 95464 7824116 /lib64/libselinux.so.1 10 init 1 root mem REG 8,2 247496 7823947 /lib64/libsepol.so.1 11 init 1 root 10u FIFO 0,17 1233 /dev/initctl 12 migration 2 root cwd DIR 8,2 4096 2 / 13 migration 2 root rtd DIR 8,2 4096 2 / 14 migration 2 root txt unknown /proc/2/exe 15 ksoftirqd 3 root cwd DIR 8,2 4096 2 / 16 ksoftirqd 3 root rtd DIR 8,2 4096 2 / 17 ksoftirqd 3 root txt unknown /proc/3/exe 18 migration 4 root cwd DIR 8,2 4096 2 / 19 migration 4 root rtd DIR 8,2 4096 2 / 20 migration 4 root txt unknown /proc/4/exe 21 ksoftirqd 5 root cwd DIR 8,2 4096 2 / 22 ksoftirqd 5 root rtd DIR 8,2 4096 2 / 23 ksoftirqd 5 root txt unknown /proc/5/exe 24 events/0 6 root cwd DIR 8,2 4096 2 / 25 events/0 6 root rtd DIR 8,2 4096 2 / 26 events/0 6 root txt unknown /proc/6/exe 27 events/1 7 root cwd DIR 8,2 4096 2 /
lsof輸出各列信息的意義以下:blog
通常在標準輸出、標準錯誤、標準輸入後還跟着文件狀態模式:進程
同時在文件狀態模式後面,還跟着相關的鎖:
tee用於將數據重定向到文件,另外一方面還能夠提供一份重定向數據的副本做爲後續命令的stdin。簡單的說就是把數據重定向到給定文件和屏幕上。