Terminal
如何在終端中畫一條實線?
我一直在尋找這個,但沒有得到滿意的答案。
我從 Gnu/Linux
tree
命令的輸出中截取了這張截圖。我想知道如何繪製或列印這樣的線條,我嘗試閱讀樹程序的原始碼,但什麼都不懂。
正如另一位使用者所評論的那樣,它需要特殊的繪圖字元。在終端中,可以通過
printf
命令呼叫它們。例如,要重新創建tree
問題中範例的前兩行,它看起來像:printf "\x1b(0\x74\x1b(B\x1b(0\x71\x1b(B\x1b(0\x71\x1b(B info\n" printf "\x1b(0\x78\x1b(B \x1b(0\x6d\x1b(B\x1b(0\x71\x1b(B\x1b(0\x71\x1b(B exclude\n"
有關畫框字元的列表,請參閱維基百科頁面。
您可以使用 terminfo(5) (
man 5 terminfo
) 中以“Line Graphics”開頭的字元表來執行此操作Glyph ACS Ascii acsc acsc Name Name Default Char Value ──────────────────────────────────────────────────────────────────── arrow pointing right ACS_RARROW > + 0x2b arrow pointing left ACS_LARROW < , 0x2c arrow pointing up ACS_UARROW ^ - 0x2d arrow pointing down ACS_DARROW v . 0x2e solid square block ACS_BLOCK # 0 0x30 diamond ACS_DIAMOND + ` 0x60 checker board (stipple) ACS_CKBOARD : a 0x61 degree symbol ACS_DEGREE \ f 0x66 plus/minus ACS_PLMINUS # g 0x67 board of squares ACS_BOARD # h 0x68 lantern symbol ACS_LANTERN # i 0x69 lower right corner ACS_LRCORNER + j 0x6a upper right corner ACS_URCORNER + k 0x6b upper left corner ACS_ULCORNER + l 0x6c lower left corner ACS_LLCORNER + m 0x6d large plus or crossover ACS_PLUS + n 0x6e scan line 1 ACS_S1 ~ o 0x6f scan line 3 ACS_S3 - p 0x70 horizontal line ACS_HLINE - q 0x71 scan line 7 ACS_S7 - r 0x72 scan line 9 ACS_S9 _ s 0x73 tee pointing right ACS_LTEE + t 0x74 tee pointing left ACS_RTEE + u 0x75 tee pointing up ACS_BTEE + v 0x76 tee pointing down ACS_TTEE + w 0x77 vertical line ACS_VLINE | x 0x78 less-than-or-equal-to ACS_LEQUAL < y 0x79 greater-than-or-equal-to ACS_GEQUAL > z 0x7a greek pi ACS_PI * { 0x7b not-equal ACS_NEQUAL ! | 0x7c UK pound sign ACS_STERLING f } 0x7d bullet ACS_BULLET o ~ 0x7e
舉個例子
tput smacs printf "%s\n%s\n" 'lqqqqqk' 'mqqqqqj' tput rmacs
輸出
┌────┐ └────┘
觀察
我注意到在我的系統上,並非所有列出的字元實際上都像描述的那樣映射。例如
echo '+ , - . 0 ` a f g h i j k l m n o p q r s t u v w y x z { | } ~' tput smacs echo '+ , - . 0 ` a f g h i j k l m n o p q r s t u v w y x z { | } ~' tput rmacs + , - . 0 ` a f g h i j k l m n o p q r s t u v w y x z { | } ~ + , - . 0 ♦ # ° ± n ↓ ┘ ┐ ┌ └ ┼ ⎺ ⎻ ─ ⎼ ⎽ ├ ┤ ┴ ┬ ≤ │ ≥ # ≠ £ ·