这是一个非常古老的问题(2010 年),但它是谷歌的最高结果,所以也可以。在这里现有的答案中,一个是不针对终端宽度进行调整的猜测,另一个调用 sed ,这不必要地昂贵。
printf 解决方案更好,因为它是内置的 bash,所以它不会减慢速度,但不是猜测 - bash 给你 $COLUMNS 告诉你你正在处理的终端窗口有多宽。
所以虽然你可以明确地对齐,比如第 40 列:
printf "%40s\n" "$the_weather"
您可以根据终端宽度调整它的大小:
printf "%$COLUMNSs\n" "$the_weather"
(因为我们在这里混合了语法,所以我们对 bash 变量使用了完整形式的语法,即 ${COLUMNS} 而不是 $COLUMNS,因此 bash 可以从其他语法中识别变量
在行动中.. 现在我们已经释放了所有 sed 处理时间,我们可以将它用于其他事情,也许:
the_weather="$(curl -sm2 'http://wttr.in/Dublin?format=%l:+%c+%f')"
printf "%${COLUMNS}s\n" "${the_weather:-I hope the weather is nice}"