Cari di Shell Script 
    Shell Script Linux Reference Manual
Daftar Isi
(Sebelumnya) S. CopyrightIndex (Berikutnya)

Appendix T. ASCII Table

Traditionally, a book of this sort has an ASCII Table appendix. This book does not. Instead, here are several short scripts, each of which generates a complete ASCII table.

Example T-1. A script that generates an ASCII table

#!/bin/bash# ascii.sh# ver. 0.2, reldate 26 Aug 2008# Patched by ABS Guide author.# Original script by Sebastian Arming.# Used with permission (thanks!).exec >ASCII.txt #  Save stdout to file, #+ as in the example scripts #+ reassign-stdout.sh and upperconv.sh.MAXNUM=256COLUMNS=5OCT=8OCTSQU=64LITTLESPACE=-3BIGSPACE=-5i=1 # Decimal countero=1 # Octal counterwhile [ "$i" -lt "$MAXNUM" ]; do  # We don't have to count past 400 octal. paddi=" $i" echo -n "${paddi: $BIGSPACE}  "   # Column spacing. paddo="00$o" #   echo -ne "${paddo: $LITTLESPACE}"   # Original. echo -ne "${paddo: $LITTLESPACE}"  # Fixup.#   ^ echo -n " " if (( i % $COLUMNS == 0)); then   # New line.   echo fi ((i++, o++)) # The octal notation for 8 is 10, and 64 decimal is 100 octal. (( i % $OCT == 0)) && ((o+=2)) (( i % $OCTSQU == 0)) && ((o+=20))doneexit $?# Compare this script with the "pr-asc.sh" example.# This one handles "unprintable" characters.# Exercise:# Rewrite this script to use decimal numbers, rather than octal.

Example T-2. Another ASCII table script

#!/bin/bash# Script author: Joseph Steinhauser# Lightly edited by ABS Guide author, but not commented.# Used in ABS Guide with permission.#-------------------------------------------------------------------------#-- File:  ascii.sh Print ASCII chart, base 10/8/16 (JETS-2012)#-------------------------------------------------------------------------#-- Usage: ascii [oct|dec|hex|help|8|10|16]#--#-- This script prints out a summary of ASCII char codes from Zero to 127.#-- Numeric values may be printed in Base10, Octal, or Hex.#--#-- Format Based on: /usr/share/lib/pub/ascii with base-10 as default.#-- For more detail, man ascii . . .#-------------------------------------------------------------------------[ -n "$BASH_VERSION" ] && shopt -s extglobcase "$1" in   oct|[Oo]?([Cc][Tt])|8)   Obase=Octal;  Numy=3o;   hex|[Hh]?([Ee][Xx])|16|[Xx]) Obase=Hex; Numy=2X;   help|?(-)[h?]) sed -n '2,/^[ ]*$/p' $0;exit;   code|[Cc][Oo][Dd][Ee])sed -n '/case/,$p'   $0;exit;   *) Obase=Decimalesac # CODE is actually shorter than the chart!printf "## $Obase ASCII Chart ##"; FM1="|%0${Numy:-3d}"; LD=-1AB="nul soh stx etx eot enq ack bel bs tab nl vt np cr so si dle" AD="dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us sp" for TOK in $AB $AD; do ABR[$((LD+=1))]=$TOK; done;ABR[127]=delIDX=0while [ $IDX -le 127 ] && CHR="${ABR[$IDX]}" do ((${#CHR}))&& FM2='%-3s'|| FM2=`printf '\%o  ' $IDX`  printf "$FM1 $FM2" "$IDX" $CHR; (( (IDX+=1)%8))||echo '|'   doneexit $?

Example T-3. A third ASCII table script, using awk

#!/bin/bash# ASCII table script, using awk.# Author: Joseph Steinhauser# Used in ABS Guide with permission.#-------------------------------------------------------------------------#-- File:  ascii Print ASCII chart, base 10/8/16 (JETS-2010)#-------------------------------------------------------------------------#-- Usage: ascii [oct|dec|hex|help|8|10|16]#--#-- This script prints a summary of ASCII char codes from Zero to 127.#-- Numeric values may be printed in Base10, Octal, or Hex (Base16).#--#-- Format Based on: /usr/share/lib/pub/ascii with base-10 as default.#-- For more detail, man ascii#-------------------------------------------------------------------------[ -n "$BASH_VERSION" ] && shopt -s extglobcase "$1" in   oct|[Oo]?([Cc][Tt])|8)   Obase=Octal;  Numy=3o;   hex|[Hh]?([Ee][Xx])|16|[Xx]) Obase=Hex; Numy=2X;   help|?(-)[h?]) sed -n '2,/^[ ]*$/p' $0;exit;   code|[Cc][Oo][Dd][Ee])sed -n '/case/,$p'   $0;exit;   *) Obase=Decimalesacexport Obase   # CODE is actually shorter than the chart!awk 'BEGIN{print "## "ENVIRON["Obase"]" ASCII Chart ##" ab="soh,stx,etx,eot,enq,ack,bel,bs,tab,nl,vt,np,cr,so,si,dle," ad="dc1,dc2,dc3,dc4,nak,syn,etb,can,em,sub,esc,fs,gs,rs,us,sp" split(ab ad,abr,",");abr[0]="nul";abr[127]="del";   fm1="|%0'"${Numy:- 4d}"' %-3s" for(idx=0;idx<128;idx++){fmt=fm1 (++colz%8?"":"|")   printf(fmt,idx,(idx in abr)?abr[idx]:sprintf("%c",idx))} }'exit $?

Copyright © 2000, by Mendel Cooper <[email protected]>
(Sebelumnya) S. CopyrightIndex (Berikutnya)