Bash
Bash Cat 文件到終端中心
我有一個帶有 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
調整空間,如果它還不夠。