问题描述
echo "Some Text"
echo " "
compgen -c a | sort | uniq | column
echo " "
对于1stscript.sh中的每个字母(不在循环中设置)重复此行设置。
我还有第二个lessscript.sh。
1stscript.sh | less
运行1stscript.sh
本身会填满我的终端模拟器的整个宽度:
但是直接运行lessscript.sh
或1stscript.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 " "