echo '0A' produz três caracteres: 0 A NL ; xxd -b imprimirá esses três caracteres em binário. Se você quisesse apenas o byte único cujo valor é 10 (ou seja, hexadecimal A ), você poderia escrever (no bash):
echo -n $'\x0A'
^ ^ ^
| | |
| | +-- '\x' indicates a hexadecimal escape
| +----- Inside a $' string, escapes are interpreted
+------- -n suppresses the trailing newline
Uma alternativa melhor seria printf '\x0A' ; O printf interpreta as seqüências de escape na string de formato e não gera novas linhas implícitas. (Esta é a solução compatível com Posix, que deve funcionar em qualquer shell compatível com Posix.) Outra possibilidade bash é echo -n -e '\x0A' ; o sinalizador -e (não padrão) solicita que o echo interprete as seqüências de escape.
Não tenho ideia de por que você esperaria que echo '1' | xxd -b emitisse o equivalente a hex 50 . Como você espera que xxd entenda que 0A é um número hexadecimal e 1 não é? Além disso, por que 50 ? (O código ascii para o caractere 1 é hex 31 .)
O endianness não afeta os bytes. A ordem dos bits dentro de um byte é totalmente conceitual até que o byte seja transmitido por uma linha serial e, mesmo assim, ele só é visível com um osciloscópio ou algo semelhante.