9

我正在使用 shell 脚本创建一个简单的基于控制台的脚本。它将在我的 bash shell 上运行它是一个基于简单菜单的驱动显示一些选项集。

现在我想根据屏幕大小对文本进行居中对齐。如何在屏幕中心对齐文本?请帮助我

4

4 回答 4

23

最后我找到了解决方案:)

COLUMNS=$(tput cols) 
title="Hello world!" 
printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title"
于 2012-09-18T12:31:43.337 回答
9

在包括 MacOS 在内的基于 BSD 的系统上,该fmt实用程序具有一个-c使文本居中的标志。

echo $text | fmt -c -w $COLUMNS

不幸的是,GNUfmt有一个不兼容的 -c 标志并且没有替代居中的方法。

于 2013-06-04T15:08:23.850 回答
0

简单的 Perl 解决方案:

perl -pe '$sp = " " x (($ENV{COLUMNS} - length) / 2); s/^/$sp/'
于 2012-09-18T07:09:37.723 回答
0

在中心打印文本:

echo "Some Text" | sed  -e :a -e "s/^.\{1,$(tput cols)\}$/ & /;ta" | tr -d '\n' | head -c $(tput cols)

输出:

                                    Some Text                                   
于 2021-09-22T12:47:31.880 回答