# | スクリプト | 解説 | |
---|---|---|---|
1 | #! /bin/bash | # | |
2 | #@(#) VT Escape sequence test tool | # | |
3 | # | ||
4 | # how to use | # | |
5 | usage() | ヘルプ表示用関数定義 | |
6 | { | # | |
7 | cat <<EOD | # | |
8 | $0 [-urc][-f foreground][-b background] any strings | # | |
9 | -u under line | # | |
10 | -r riverce | # | |
11 | -c clear ESC sequence and screen | # | |
12 | -f/b colorname | # | |
13 | colorname: | # | |
14 | `esc -b white -f black 0, kuro, black` | 自分自身を呼び出し例題を表示 | |
15 | `esc -b white -f red 1, aka, red` | # | |
16 | `esc -b white -f green 2, midori, green` | # | |
17 | `esc -b white -f blue 4, ao, blue` | # | |
18 | `esc -b white -f purple 5, murasaki, purple, violet` | # | |
19 | `esc -b white -f cyan 6, mizu, cyan` | # | |
20 | `esc -b black -f white 7, shiro, white` | # | |
21 | EOD | # | |
22 | exit 0 | # | |
23 | } | # | |
24 | # | ||
25 | # convert color nmae to code | # | |
26 | color2seq() | 色名を解析し、色コードに変換する関数 | |
27 | { | # | |
28 | color=`echo $1|tr A-Z a-z` | 大文字を小文字に変換 | |
29 | case $color in | 色名を解析 | |
30 | 0|kuro|black) echo 0;; | 0, kuro, または black の場合、コード 0 を返す | |
31 | 1|aka|red) echo 1;; | # | |
32 | 2|midori|green) echo 2;; | # | |
33 | 3|ki|yellow) echo 3;; | # | |
34 | 4|ao|blue) echo 4;; | # | |
35 | 5|murasaki|purple|violet) echo 5;; | # | |
36 | 6|mizu|cyan) echo 6;; | # | |
37 | 7|siro|shiro|white) echo 7;; | # | |
38 | esac | # | |
39 | } | # | |
40 | # | ||
41 | # preset escape sequence | 変数(シーケンス)の初期設定 | |
42 | seqS='\033[' | 8進数で033は<ESC> | |
43 | seq0="" | # | |
44 | seq1="30" | # | |
45 | seq2="47" | # | |
46 | seqE='\033[0m' | リセット用シーケンス | |
47 | # | ||
48 | ## option analize | # | |
49 | while getopts :curhf:b: n | オプション処理、引数の -x を処理 f: は -f xxx というように引数を伴うオプション | |
50 | do | # | |
51 | case $n in | # | |
52 | b) seq2="4`color2seq $OPTARG`" ;; | # | |
53 | c) echo $seqE; clear; exit 0;; | # | |
54 | f) seq1="3`color2seq $OPTARG`" ;; | # | |
55 | r) seq0="${seq0}7;" ;; | # | |
56 | u) seq0="${seq0}4;" ;; | # | |
57 | h|?) usage ;; | # | |
58 | esac | # | |
59 | done | # | |
60 | let argc=OPTIND-1 | # | |
61 | shift $argc | # | |
62 | # | ||
63 | # print arguments with rendering | # | |
64 | echo -e "$seqS$seq0$seq1;${seq2}m$*$seqE" | # |