shell(3) 重定向.doc

1) 重定向错误:

> >> 不能重定向 STDERR ,使用 2> 2>> 进行错误重定向

 

2) 同时重定向 STDOUT STDERR

xxx 1>a.txt 2>a.txt

xxx &>a.txt

xxx >& a.txt

 

3) 重定向到文件描述符:

使用 &

>&n

eg: >&2 重定向到 STDERR

 

4) 脚本中永久重定向:

exec 1>t.txt

exec 1>>t.txt         # 追加需要使用 >>

exec 0<t.txt

重定向符号两侧不要有空格

脚本可同时打开 9 个文件描述符,可自定义的为 3 8

exec 3>t.txt

echo "abc" >&3 # 输出到 t.txt

 

5) 描述符的存储与恢复:

exec 4>&1            # 存储 1 4

exec 1>a.txt           # 1

echo "bbbb"           # 将输出到 a.txt

exec 1>&4            # 恢复 1

echo "aaaa">&1     # 将输出到 STDOUT

 

类似地:

exec 4<&0            # 存储 0 4

exec 0<a.in            # 重定向输入

exec 0<&4            # 恢复 STDIN

 

6) 可读可写的文件描述符:

exec 3<>a.txt         #3 可同时用于输入输出

 

exec 3>&-             # 关闭 3

 

eg:

exec 4>&1

echo "bbbb">&4    # 将输出到 STDOUT

exec 4>&-

echo "aaaa">&4     # 将报错

 

7) 对整个函数的输出重定向

可以直接在函数调用后加重定向

 

8) 附录:

lsof, view all fd in the linux system

lsof -p PID, view all fd of a PID

 

 

你可能感兴趣的:(shell(3) 重定向.doc)