我的最终目标是生成一个文本块,可用于在终端上测试各种字体。我想生成基本上是 ascii 图表的文件。从 1 到 255 的一系列字符就可以了,我不担心铃声、空格或任何东西,非常简单。
我知道如果我想输入所有数字,我可以这样做:
printf '\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a'
ABCDEFGHIJKLMNOPQRSTUVWXYZ
但我不想把它们全部打出来。我知道我可以使用printf
andseq
与子 shell 来生成一些十六进制
printf %x' ' `seq 65 90`
41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a
有人可以帮我把这些点联系起来吗?
我不需要正式的 ascii 表,但我想要几乎所有可见字符,这样我就可以更好地测试各种字体。
答案1
POSIX一:
$ awk 'BEGIN{for(n=33;n<=90;n++)printf "%c",n}'
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
珀尔一:
$ perl -e 'print chr for 33..90'
答案2
也许像这样:
perl -e 'for(65..90) { printf "%c", $_ }'
printf(1)
或者,如果您坚持在 Linux 上执行此操作:
printf $( printf '\\x%02x' $( seq 65 90 ) )
或者,在printf(1)
*BSD 上:
printf $( printf '\\x%02x' $( jot - 65 90 1 ) )
答案3
与bash >= 3.0
,ksh93r
及以上, zsh
:
printf $( printf '\\x%02x' {65..90})