به طور قراردادی کتابی از این نوع، دارای یک پیوست جدول ASCII میباشد. این کتاب چنین جدولی ندارد. در عوض، در اینجا چند اسکریپت کوتاه هست، که هر یک از آنها یک جدول ASCII کامل تولید میکند.
مثال T-1- اسکریپتی که یک جدول اسکی تولید میکند
#!/bin/bash # #نگارش 0.2، تاریخ انتشار 26 Aug 2008 #تعمیر شده توسط مولف راهنمای ABS. #اسکریپت اصلی نوشته Sebastian Arming. #با مجوز در اینجا استفاده گردیده(تشکر!). exec >ASCII.txt #ذخیره خروجی در فایل، همچون در اسکریپتهای #+مثال reassign-stdout.sh و upperconv.sh MAXNUM=256 COLUMNS=5 OCT=8 OCTSQU=64 LITTLESPACE=-3 BIGSPACE=-5 i=1 #شمارشگر دسیمال o=1 #شمارشگر اکتال while [ "$i" -lt "$MAXNUM" ]; do #نباید بعد از 400 اکتال را بشماریم. paddi=" $i" echo -n "${paddi: $BIGSPACE} " #فاصله گذاری ستون. paddo="00$o" # #در اسکریپت اولیه. echo -ne "\\0${paddo: $LITTLESPACE}" #تعمیر شده. # echo -n " " if (( i % $COLUMNS == 0)); then #سطر جدید. echo fi ((i++, o++)) #نشانهگذاری اکتال برای 8 میشود 10، و 64 دسیمال برابر 100 اکتال است. (( i % $OCT == 0)) && ((o+=2)) (( i % $OCTSQU == 0)) && ((o+=20)) done exit $? #این اسکریپت را با مثال pr-asc.sh مقایسه نمایید. #این کاراکترهای غیر قابل چاپ را هم مدیریت میکند. #تمرین: #این اسکریپت را جهت استفاده از اعداد دسیمال به جای اکتال ، بازنویسی کنید.
مثال T-2. یک اسکریپت جدول اسکی دیگر
#!/bin/bash #نویسنده اسکریپت: Joseph Steinhauser #ویرایش جزیی توسط نگارنده، اما بدون توضیح دادن. #در راهنمای ABS با مجوز استفاده گردیده است. #------------------------------------------------------------------------- #-- #------------------------------------------------------------------------- #-- #-- #--این اسکریپت خلاصه وضعیتی از کاراکترهای اسکی از کد 0 تا 127 چاپ میکند. #--مقادیر عددی میتواند در مبنای دسیمال، اکتال، یا هگزادسیمال چاپ بشود. #-- #--قالب مبتنی بر: /usr/share/lib/pub/ascii با مبنای 10 به عنوان پیشفرض. #--برای توضیحات بیشتر man ascii . . . #------------------------------------------------------------------------- [ -n "$BASH_VERSION" ] && shopt -s extglob case "$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=Decimal esac #واقعا کد کوتاهتر از جدول است! printf "\t\t## $Obase ASCII Chart ##\n\n"; FM1="|%0${Numy:-3d}"; LD=-1 AB="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]=del IDX=0 while [ $IDX -le 127 ] && CHR="${ABR[$IDX]}" do ((${#CHR}))&& FM2='%-3s'|| FM2=`printf '\\\\%o ' $IDX` printf "$FM1 $FM2" "$IDX" $CHR; (( (IDX+=1)%8))||echo '|' done exit $?
مثال T-3. اسکریپت سوم جدول اسکی، با استفاده از awk
#!/bin/bash #اسکریپت جدول ASCII با استفاده از awk. #مولف: Joseph Steinhauser #با مجوز در راهنمای ABS استفاده گردیده. #------------------------------------------------------------------------- #-- #------------------------------------------------------------------------- #-- #-- #--این اسکریپت یک خلاصه وضعیت از کاراکترها از کد صفر تا 127 چاپ میکند. #--مقادیر عددی میتوانند در مبنای 10، اکتال، یا هگز (مبنای 16) باشند. #--#-- قالب برمبنای: /usr/share/lib/pub/ascii با مبنای 10 به عنوان پیشفرض. #--برای توضیحات بیشتر man ascii . . . #------------------------------------------------------------------------- [ -n "$BASH_VERSION" ] && shopt -s extglob case "$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=Decimal esac export Obase #کد واقعاً کوتاهتر از جدول است! awk 'BEGIN{print "\n\t\t## "ENVIRON["Obase"]" ASCII Chart ##\n" 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?"":"|\n") printf(fmt,idx,(idx in abr)?abr[idx]:sprintf("%c",idx))} }' exit $?