| # | スクリプト | 解説 | |
|---|---|---|---|
| 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" | # |