Como imprimir todos os caracteres ASCII imprimíveis na CLI?

20

Como posso listar todos os caracteres ASCII imprimíveis no terminal?

    
por LanceBaynes 17.06.2011 / 08:37

6 respostas

17

Experimente o printf e um shell como o ksh93, zsh ou bash:

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

Veja também: BASH FAQ

    
por 17.06.2011 / 08:52
23

Você pode fazer:

man ascii

para ver o conjunto completo de caracteres ascii, ou você pode simplesmente executar o comando 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
    
por 17.06.2011 / 09:21
10

Mais uma solução awk que um shell (puro) é um, mas aqui está mesmo assim:

awk 'BEGIN{for(i=32;i<127;i++)printf "%c",i}';echo
    
por 17.06.2011 / 11:17
4

A página de manual ascii também pode ser usada para obter uma lista assim:

$ man 7 ascii
ASCII(7)                  Linux Programmer's Manual                  ASCII(7)

NAME
       ascii - ASCII character set encoded in octal, decimal, and hexadecimal

DESCRIPTION
       ASCII  is  the American Standard Code for Information Interchange. 
       It is a 7-bit code.  Many 8-bit codes (such  as  ISO  8859-1,  the  
       Linux default  character set) contain ASCII as their lower half.  
       The international counterpart of ASCII is known as ISO 646.

       The following table contains the 128 ASCII characters.

       C program '\X' escapes are noted.

       Oct   Dec   Hex   Char                        Oct   Dec   Hex  Char
       ──────────────────────────────────────────────────────────────────────
       000   0     00    NUL '
$ man 7 ascii
ASCII(7)                  Linux Programmer's Manual                  ASCII(7)

NAME
       ascii - ASCII character set encoded in octal, decimal, and hexadecimal

DESCRIPTION
       ASCII  is  the American Standard Code for Information Interchange. 
       It is a 7-bit code.  Many 8-bit codes (such  as  ISO  8859-1,  the  
       Linux default  character set) contain ASCII as their lower half.  
       The international counterpart of ASCII is known as ISO 646.

       The following table contains the 128 ASCII characters.

       C program '\X' escapes are noted.

       Oct   Dec   Hex   Char                        Oct   Dec   Hex  Char
       ──────────────────────────────────────────────────────────────────────
       000   0     00    NUL '%pre%'                    100   64    40   @
       001   1     01    SOH (start of heading)      101   65    41   A
       002   2     02    STX (start of text)         102   66    42   B
       003   3     03    ETX (end of text)           103   67    43   C
       004   4     04    EOT (end of transmission)   104   68    44   D
       005   5     05    ENQ (enquiry)               105   69    45   E
       006   6     06    ACK (acknowledge)           106   70    46   F
       007   7     07    BEL '\a' (bell)             107   71    47   G
       010   8     08    BS  '\b' (backspace)        110   72    48   H
       011   9     09    HT  '\t' (horizontal tab)   111   73    49   I
       012   10    0A    LF  '\n' (new line)         112   74    4A   J
       013   11    0B    VT  '\v' (vertical tab)     113   75    4B   K
       014   12    0C    FF  '\f' (form feed)        114   76    4C   L
       015   13    0D    CR  '\r' (carriage ret)     115   77    4D   M
       016   14    0E    SO  (shift out)             116   78    4E   N
       017   15    0F    SI  (shift in)              117   79    4F   O
       020   16    10    DLE (data link escape)      120   80    50   P
       021   17    11    DC1 (device control 1)      121   81    51   Q
       022   18    12    DC2 (device control 2)      122   82    52   R
       023   19    13    DC3 (device control 3)      123   83    53   S
       024   20    14    DC4 (device control 4)      124   84    54   T
       025   21    15    NAK (negative ack.)         125   85    55   U
       026   22    16    SYN (synchronous idle)      126   86    56   V
       027   23    17    ETB (end of trans. blk)     127   87    57   W
       030   24    18    CAN (cancel)                130   88    58   X
       031   25    19    EM  (end of medium)         131   89    59   Y
       032   26    1A    SUB (substitute)            132   90    5A   Z
       033   27    1B    ESC (escape)                133   91    5B   [
       034   28    1C    FS  (file separator)        134   92    5C   \  '\'
       035   29    1D    GS  (group separator)       135   93    5D   ]
       036   30    1E    RS  (record separator)      136   94    5E   ^
       037   31    1F    US  (unit separator)        137   95    5F   _
       040   32    20    SPACE                       140   96    60   '
    ...
    ...
' 100 64 40 @ 001 1 01 SOH (start of heading) 101 65 41 A 002 2 02 STX (start of text) 102 66 42 B 003 3 03 ETX (end of text) 103 67 43 C 004 4 04 EOT (end of transmission) 104 68 44 D 005 5 05 ENQ (enquiry) 105 69 45 E 006 6 06 ACK (acknowledge) 106 70 46 F 007 7 07 BEL '\a' (bell) 107 71 47 G 010 8 08 BS '\b' (backspace) 110 72 48 H 011 9 09 HT '\t' (horizontal tab) 111 73 49 I 012 10 0A LF '\n' (new line) 112 74 4A J 013 11 0B VT '\v' (vertical tab) 113 75 4B K 014 12 0C FF '\f' (form feed) 114 76 4C L 015 13 0D CR '\r' (carriage ret) 115 77 4D M 016 14 0E SO (shift out) 116 78 4E N 017 15 0F SI (shift in) 117 79 4F O 020 16 10 DLE (data link escape) 120 80 50 P 021 17 11 DC1 (device control 1) 121 81 51 Q 022 18 12 DC2 (device control 2) 122 82 52 R 023 19 13 DC3 (device control 3) 123 83 53 S 024 20 14 DC4 (device control 4) 124 84 54 T 025 21 15 NAK (negative ack.) 125 85 55 U 026 22 16 SYN (synchronous idle) 126 86 56 V 027 23 17 ETB (end of trans. blk) 127 87 57 W 030 24 18 CAN (cancel) 130 88 58 X 031 25 19 EM (end of medium) 131 89 59 Y 032 26 1A SUB (substitute) 132 90 5A Z 033 27 1B ESC (escape) 133 91 5B [ 034 28 1C FS (file separator) 134 92 5C \ '\' 035 29 1D GS (group separator) 135 93 5D ] 036 30 1E RS (record separator) 136 94 5E ^ 037 31 1F US (unit separator) 137 95 5F _ 040 32 20 SPACE 140 96 60 ' ... ...
    
por 26.04.2014 / 17:12
1

com zsh :

$ print -raC16 {" "..~}
   !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /
0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?
@  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O
P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _
'  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~
    
por 25.04.2018 / 13:48
1

Expandindo a solução do jlliagre (e útil se você não tiver o comando ascii disponível):

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

Você também pode canalizar o acima para pr -t6 -w78 para obter uma saída de uma página:

 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

No meu script de inicialização independente do sistema operacional, eu tenho:

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; }

(observe o ; antes do fechamento da função } )

Agradecimentos especiais a Stéphane Chazelas pela parte pr -t6 .

    
por 25.04.2018 / 13:19