如何在 CLI 中打印所有可打印的 ASCII 字符?

如何在 CLI 中打印所有可打印的 ASCII 字符?

如何列出终端中所有可打印的 ASCII 字符?

答案1

你可以做:

man ascii

要查看整个 ascii 字符集,或者您可以只运行命令ascii

$ ascii
Usage: ascii [-dxohv] [-t] [char-alias...]
   -t = one-line output  -d = Decimal table  -o = octal table  -x = hex table
   -h = This help screen -v = version information
Prints all aliases of an ASCII character. Args may be chars, C \-escapes,
English names, ^-escapes, ASCII mnemonics, or numerics in decimal/octal/hex.

Dec Hex    Dec Hex    Dec Hex  Dec Hex  Dec Hex  Dec Hex   Dec Hex   Dec Hex  
  0 00 NUL  16 10 DLE  32 20    48 30 0  64 40 @  80 50 P   96 60 `  112 70 p
  1 01 SOH  17 11 DC1  33 21 !  49 31 1  65 41 A  81 51 Q   97 61 a  113 71 q
  2 02 STX  18 12 DC2  34 22 "  50 32 2  66 42 B  82 52 R   98 62 b  114 72 r
  3 03 ETX  19 13 DC3  35 23 #  51 33 3  67 43 C  83 53 S   99 63 c  115 73 s
  4 04 EOT  20 14 DC4  36 24 $  52 34 4  68 44 D  84 54 T  100 64 d  116 74 t
  5 05 ENQ  21 15 NAK  37 25 %  53 35 5  69 45 E  85 55 U  101 65 e  117 75 u
  6 06 ACK  22 16 SYN  38 26 &  54 36 6  70 46 F  86 56 V  102 66 f  118 76 v
  7 07 BEL  23 17 ETB  39 27 '  55 37 7  71 47 G  87 57 W  103 67 g  119 77 w
  8 08 BS   24 18 CAN  40 28 (  56 38 8  72 48 H  88 58 X  104 68 h  120 78 x
  9 09 HT   25 19 EM   41 29 )  57 39 9  73 49 I  89 59 Y  105 69 i  121 79 y
 10 0A LF   26 1A SUB  42 2A *  58 3A :  74 4A J  90 5A Z  106 6A j  122 7A z
 11 0B VT   27 1B ESC  43 2B +  59 3B ;  75 4B K  91 5B [  107 6B k  123 7B {
 12 0C FF   28 1C FS   44 2C ,  60 3C <  76 4C L  92 5C \  108 6C l  124 7C |
 13 0D CR   29 1D GS   45 2D -  61 3D =  77 4D M  93 5D ]  109 6D m  125 7D }
 14 0E SO   30 1E RS   46 2E .  62 3E >  78 4E N  94 5E ^  110 6E n  126 7E ~
 15 0F SI   31 1F US   47 2F /  63 3F ?  79 4F O  95 5F _  111 6F o  127 7F DEL

答案2

尝试用打印函数以及 ksh93、zsh 或 bash 等 shell:

for ((i=32;i<127;i++)) do printf "\\$(printf %03o "$i")"; done;printf "\n"

也可以看看 :BASH FAQ

答案3

更多的awk是一个(纯)shell 的解决方案,但无论如何它是:

awk 'BEGIN{for(i=32;i<127;i++)printf "%c",i; print}'

答案4

扩展 jlliagre 的解决方案(如果您没有ascii可用的命令,则很有用):

awk 'BEGIN {for (i = 32; i < 127; i++) printf "%3d 0x%02x %c\n", i, i, i}'

您还可以通过管道将上面的内容传递到以pr -t6 -w78获得一页输出:

 32 0x20      48 0x30 0    64 0x40 @    80 0x50 P    96 0x60 `   112 0x70 p
 33 0x21 !    49 0x31 1    65 0x41 A    81 0x51 Q    97 0x61 a   113 0x71 q
 34 0x22 "    50 0x32 2    66 0x42 B    82 0x52 R    98 0x62 b   114 0x72 r
 35 0x23 #    51 0x33 3    67 0x43 C    83 0x53 S    99 0x63 c   115 0x73 s
 36 0x24 $    52 0x34 4    68 0x44 D    84 0x54 T   100 0x64 d   116 0x74 t
 37 0x25 %    53 0x35 5    69 0x45 E    85 0x55 U   101 0x65 e   117 0x75 u
 38 0x26 &    54 0x36 6    70 0x46 F    86 0x56 V   102 0x66 f   118 0x76 v
 39 0x27 '    55 0x37 7    71 0x47 G    87 0x57 W   103 0x67 g   119 0x77 w
 40 0x28 (    56 0x38 8    72 0x48 H    88 0x58 X   104 0x68 h   120 0x78 x
 41 0x29 )    57 0x39 9    73 0x49 I    89 0x59 Y   105 0x69 i   121 0x79 y
 42 0x2a *    58 0x3a :    74 0x4a J    90 0x5a Z   106 0x6a j   122 0x7a z
 43 0x2b +    59 0x3b ;    75 0x4b K    91 0x5b [   107 0x6b k   123 0x7b {
 44 0x2c ,    60 0x3c <    76 0x4c L    92 0x5c \   108 0x6c l   124 0x7c |
 45 0x2d -    61 0x3d =    77 0x4d M    93 0x5d ]   109 0x6d m   125 0x7d }
 46 0x2e .    62 0x3e >    78 0x4e N    94 0x5e ^   110 0x6e n   126 0x7e ~
 47 0x2f /    63 0x3f ?    79 0x4f O    95 0x5f _   111 0x6f o

在我的独立于操作系统的启动脚本中,我有:

command -v ascii &> /dev/null || function ascii { awk 'BEGIN {for (i = 32; i < 127; i++) printf "%3d 0x%02x %c\n", i, i, i}' | pr -t6 -w78; }

(注意;函数关闭之前}

特别感谢 Stéphane Chazelas 的参与pr -t6

相关内容