我用来watch
定期运行一个 perl 脚本,需要Term::Size
使用以下命令获取终端宽度
$columns = Term::Size::chars *STDOUT{IO}
奇怪的是,$columns
在这种情况下是一个空字符串。是否watch
以某种方式操纵STDOUT
terminfo 数据库?
答案1
不幸的是,watch
使用管道来收集子进程的输出,正如您可以看到的watch 'ls -l /proc/self/fd'
Every 2.0s: ls -l /proc/self/fd ...
lrwx------ 1 64 Aug 7 16:28 0 -> /dev/pts/6
l-wx------ 1 64 Aug 7 16:28 1 -> pipe:[42416612]
l-wx------ 1 64 Aug 7 16:28 2 -> pipe:[42416612]
lr-x------ 1 64 Aug 7 16:28 3 -> /proc/3509/fd