“打开终端”的 bash 测试

“打开终端”的 bash 测试

我注意到 BASH 的条件表达式列表中有一个-t表达式,用于测试文件描述符是否是开放的终端。我尝试了以下操作:

if [[ -t $(tty) ]]; then
  echo open terminal $(tty)
else
  echo not open terminal $(tty)
fi;

并得到我的回应

not open terminal /dev/pts/35

我已经从控制台尝试了同样的事情并得到了

not open terminal /dev/tty1

在手册页中将-t 其参数描述为FD“文件描述符”,而不是将参数描述为其他条件表达式FILE

有人可以为“文件描述符”提供成功的 BASH 测试吗?该测试是“打开”并且“引用终端”吗?

答案1

文件描述符是小的整数。

具体来说,stdin是 fd 0;stdout是 fd 1;stderr是 fd 2。

您可能已经在以下行中看到“文件描述符”的相同用法:

./cmd 2>&1

这意味着“运行./cmd,将 fd 2 (stderr) 重定向到 fd 1 (stdout)。

的正常用途-t是判断输入是否来自终端:

[[ -t 0 ]] && echo "Input is coming from a terminal"

相关内容