我似乎记得一些命令或环境变量告诉你这一点。例如,我基本上想要在终端上执行的东西,给你
echo $STDIN
/dev/tty
echo $STDOUT
/dev/tty
fdescribe 0 or fdescribe /dev/stdin
/dev/tty
fdescribe 1 or fdescribe /dev/stdout
/dev/tty
但可以在脚本或子进程中执行
我似乎记得一些命令或环境变量告诉你这一点。例如,我基本上想要在终端上执行的东西,给你
echo $STDIN
/dev/tty
echo $STDOUT
/dev/tty
fdescribe 0 or fdescribe /dev/stdin
/dev/tty
fdescribe 1 or fdescribe /dev/stdout
/dev/tty
但可以在脚本或子进程中执行
嗯,根据定义,fd 0 与 stdin 相关联,fd 1 与 stdout 相关联。
如果您想知道在(类似 Bourne 或类似 csh 的 )shell 中这些 fd 上打开了哪些文件,您可以执行以下操作:
在 Linux 或 Cygwin 上,另请参阅:
尽管输出是套接字或管道,但用处不大。
再次在 Linux 上,添加
-E
tolsof
可以为某些类型的文件(例如管道、伪 tty 或某些套接字)提供更多信息,以了解另一端的内容(如果有)。最新版本
util-linux
还有一个lsfd
实用程序(特定于 Linux),可以为您提供一些与以下内容相同的信息lsof
:或者
¹ 在类似 rc 的 shell 中,使用
$pid
代替$$
和fish
:$fish_pid