从shell脚本(sh/bash)中,如何知道要重定向到哪个设备或文件名?
例如,我有一个名为script.sh的shell脚本。
我运行shell脚本并将STDOUT重定向到名为out.txt的文件,并将STDERR重定向到名为err.txt的文件。
所以,看起来是这样的:
$ ./script.sh > out.txt 2> err.txt现在,在shell脚本中,我可以判断STDOUT (或STDERR)是否被重定向:
if [ -t 1 ]; then...
if [ ! -t 1 ]; then...但是,一旦我知道STDOUT (或STDERR)正在被重定向,我如何才能知道它被重定向到哪里?
发布于 2014-02-09 06:32:08
您可以使用lsof:
/usr/sbin/ -p $$ -a -d 1
上面只列出当前进程的文件描述符1:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5054 matt 1u CHR 136,1 0t0 4 /dev/pts/1https://unix.stackexchange.com/questions/114299
复制相似问题