Bash

Bash Cat 文件到終端中心

  • February 21, 2021

我有一個帶有 aome ascii art 的文本文件。我試圖讓它在終端啟動時列印到終端。我知道要做到這一點,我在我的 .bashrc 中添加了 cat myfi。我被困在試圖讓 cat 的輸出居中。我嘗試使用 tput cols 失敗。

任何人都可以給我一些提示,或者如果這是可能的。

一種方法是執行以下步驟:

  • 獲取終端寬度
  • 在 ASCII 藝術文件中找到最長的行
  • 取這些數字之間的差並除以 2 以獲得所需的縮進
  • 列印 ASCII 藝術文件,每行縮進

這是一個範例腳本,用於awk進行計算:

#!/bin/sh
input="$1"
twidth=$(tput cols)
echo terminal width is $twidth
indent=$(awk -v twidth=$twidth '    {
                                    w=length();
                                    if (w > fwidth) fwidth=w;
                                   }
                               END {
                                    indent=int((twidth-fwidth)/2);
                                    print (indent > 0 ? indent : 0);
                                   }' < "$input")
echo indent is $indent
awk -v indent=$indent '{ printf("%*s", indent, " "); print; }' < "$input"

這是一個大字母 L 的測試:

$ cat /tmp/L
#
#
#
#
#
#
#######

$ ./center /tmp/L
terminal width is 81
indent is 37
                                    #
                                    #
                                    #
                                    #
                                    #
                                    #
                                    #######
sed -e 's/^/                   /' /path/to/ascii_art

調整空間,如果它還不夠。

引用自:https://unix.stackexchange.com/questions/403454