有没有办法保持较少响应的列数?脚本列|减

问题描述

我有一个简单的脚本

echo "Some Text"
echo " "
compgen -c a | sort | uniq | column
echo " "

对于1stscript.sh中的每个字母(不在循环中设置)重复此行设置。

我还有第二个lessscript.sh。

1stscript.sh | less

运行1stscript.sh本身会填满我的终端模拟器的整个宽度:

但是直接运行lessscript.sh1stscript.sh | less仅使用终端仿真器宽度的1/3:

aa-exec         apropos         atrm
ab              apt             aubrsync
aclocal         apt-cache       aubusy

我尝试注释掉设置的文本长度线。我曾尝试用t和x等列标记解决无济于事。

在两种情况下如何使其适应终端宽度?

解决方法

column会尝试查找正在写入的终端的大小,但是如果正在写入管道(没有固有宽度),则默认为80。

程序tput的作用相同,但是除了输出以外,它还检查stdin,stderr和会话TTY。因此,您可以使用它来确定column的列数:

echo "Some Text"
echo " "
compgen -c a | sort | uniq | column -c "$(tput cols)"
echo " "