在bash中获取重定向位置

时间:2014-09-29 14:45:30

标签: linux bash shell

我有一个脚本,我从cron调用它并将其输出重定向到一个文件。

Crontab充满了另一个脚本,该脚本还生成了stdout重定向的位置,该位置可能会因许多因素而改变。

我想知道,在我的脚本中,重定向了什么文件stdout。

有没有办法在没有任何配置文件的情况下完成此操作或将文件位置作为参数传递给脚本?

由于

3 个答案:

答案 0 :(得分:1)

您可以使用lsof;可能有一种更简单的方法将输出限制为文件名。

lsof -d 1 -a -p $$ -Fn | awk '/^n/ { print substr($1, 2); }'

如果您的操作系统没有/proc文件系统,则此功能很有用。

答案 1 :(得分:0)

readlink -f /proc/$$/fd/1

$$ ...正在运行的脚本的pid

/proc/[pid]/fd/1 ... 1是stdout的文件描述符,它表示为实际文件的符号链接

答案 2 :(得分:0)

从shell脚本中,您可以使用:

/proc/$$/fd/1

这是shell进程的标准输出($$)。

你可以试试这个:

#!/bin/bash

readlink /proc/$$/fd/1

如果您调用此脚本.sh,请运行script.sh > /tmp/f.out 当您阅读文件/tmp/f.out的内容时,它将是:

/tmp/f.out