我正在使用 shell 脚本创建一个简单的基于控制台的脚本。它将在我的 bash shell 上运行它是一个基于简单菜单的驱动显示一些选项集。
现在我想根据屏幕大小对文本进行居中对齐。如何在屏幕中心对齐文本?请帮助我
最后我找到了解决方案:)
COLUMNS=$(tput cols)
title="Hello world!"
printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title"
在包括 MacOS 在内的基于 BSD 的系统上,该fmt
实用程序具有一个-c
使文本居中的标志。
echo $text | fmt -c -w $COLUMNS
不幸的是,GNUfmt
有一个不兼容的 -c 标志并且没有替代居中的方法。
简单的 Perl 解决方案:
perl -pe '$sp = " " x (($ENV{COLUMNS} - length) / 2); s/^/$sp/'
在中心打印文本:
echo "Some Text" | sed -e :a -e "s/^.\{1,$(tput cols)\}$/ & /;ta" | tr -d '\n' | head -c $(tput cols)
输出:
Some Text