次のページ 前のページ 目次へ

6. 特別な文字: 8進数エスケープシーケンス

キーボードから入力できる文字以外にも、スクリーン上に表示できる文字は沢山 あります。あなたがどんなフォントを使っているのかを確認するためのスクリプトを 作ってみましたので、使ってみて下さい。このような文字を使うために必要な 主なコマンドは"echo -e"です。"-e"スイッチにより、echo はバックスラッシュで エスケープされた文字を解釈するようになります。8進数200-400で表示されるのは、 標準の Linux フォントと VGA フォントでは非常に異なっています。これらの エスケープシーケンスがあなたの端末でおかしな結果を表示するかもしれません ので、注意して下さい。そうなることを防ぐようにはしてありません。Bashprompt でよく用いられている(Word Perfect でなじみになった)罫線や四角の文字は、 8進数260から337にあります。


#!/bin/bash

#   Script: escgen

function usage {
   echo -e "\033[1;34mescgen\033[0m <lower_octal_value> [<higher_octal_value>]"
   echo "   8進数エスケープシーケンスジェネレーター:下限の値から上限の値までの"
   echo "   すべての8進数エスケープシーケンスを表示します。もし、2番目の上限の"
   echo "   値が与えられなければ、8個の文字が表示されます。"
   echo "   1998 - Giles Orr, no warranty."
   exit 1
}

if [ "$#" -eq "0" ]
then
   echo -e "\033[1;31mPlease supply one or two values.\033[0m"
   usage
fi
let lower_val=${1}
if [ "$#" -eq "1" ]
then
   #   もし上限値が与えられない場合は、8個にする。
   upper_val=$(echo -e "obase=8 \n ibase=8 \n $lower_val+10 \n quit" | bc)
else
   let upper_val=${2}
fi
if [ "$#" -gt "2" ]
then 
   echo -e "\033[1;31mPlease supply two values.\033[0m"
   echo
   usage
fi
if [ "${lower_val}" -gt "${upper_val}" ]
then
   echo -e "\033[1;31m${lower_val} is larger than ${upper_val}."
   echo
   usage
fi
if [ "${upper_val}" -gt "777" ]
   then
   echo -e "\033[1;31mValues cannot exceed 777.\033[0m"
   echo
   usage
fi

let i=$lower_val
let line_count=1
let limit=$upper_val
while [ "$i" -lt "$limit" ]
do
   octal_escape="\\$i"
   echo -en "$i:'$octal_escape' "
   if [ "$line_count" -gt "7" ]
   then 
      echo
      #   Put a hard return in.
      let line_count=0
   fi
   let i=$(echo -e "obase=8 \n ibase=8 \n $i+1 \n quit" | bc)
   let line_count=$line_count+1
done
echo

xfd を使って X フォントに含まれるすべての文字を表示することも できます。 コマンドは、"xfd -fn <fontname>"です。ある文字の上でクリックすると、 その8進法での値を含め、その文字に関する様々な情報が得られます。上のスクリプト は、コンソール上で現在のフォント名が分からない時に役に立つでしょう。


次のページ 前のページ 目次へ