我有一个 bash 脚本,可以对项目列表进行列化。默认情况下,它会根据报告的终端宽度猜测要输出的列数stty size。但是当脚本在管道中时,stty报告“设备的 ioctl 不合适”。
stty size
stty
我想要的是允许我的脚本在作为管道中间的命令执行时,发现它所属的管道是否最终输出到 tty - 如果是,则能够确定其特征。
解决方案:正如下面所指出的,stty -F /dev/tty似乎可以在管道中的任何地方工作。
stty -F /dev/tty
shell pipe io-redirection shell-script stty
io-redirection ×1
pipe ×1
shell ×1
shell-script ×1
stty ×1