Hexadecimal de expansão de Bash

8

Eu gostaria de saber se existe uma maneira de usar a expansão do bash para visualizar todas as possibilidades de combinação para um número de dígitos em hexadecimal. Posso expandir em binários

Na base 2:

echo {0..1}{0..1}{0..1}

Que devolve:

000 001 010 011 100 101 110 111

Na base 10:

echo {0..9}{0..9}

Que devolve:

00  01 02...99

Mas em hexadecimal:

echo {0..F}

Repita:

{0..F}
    
por David Borges 19.02.2017 / 16:21

3 respostas

18

Você pode; você só precisa dividir o intervalo {0..F} em dois intervalos separados {0..9} e {A..F} :

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF
    
por 19.02.2017 / 20:15
12

Usando printf :

$ printf '%02x ' {0..255}

A string de formato %02x diz para formatar a saída como um número hexadecimal de dois dígitos, minúsculas e cheio de zero.

Se você deseja maiúsculas, use %02X .

O Bash apenas entende intervalos inteiros da base 10 ou intervalos de caracteres alfabéticos em expansões de chaves de intervalos.

    
por 19.02.2017 / 16:25
7

É possível, mas não é legal:

echo {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

Até onde eu sei, bash não tem noção de intervalos hexadecimais.

    
por 19.02.2017 / 16:32