如何列出终端中所有可打印的 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
。