Em um Big Endian-System (Solaris no SPARC)
$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6
0
Em um pequeno sistema endian (Linux em x86)
$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6
1
A solução acima é inteligente e funciona muito bem para o Linux * 86 e Solaris Sparc.
Eu precisava de uma solução somente shell (sem Perl) que também funcionasse no AIX / Power e no HPUX / Itanium. Infelizmente os dois últimos não são bons: o AIX informa "6" e o HPUX dá uma linha vazia.
Usando sua solução, consegui criar algo que funcionasse em todos esses sistemas Unix:
$ echo I | tr -d [:space:] | od -to2 | head -n1 | awk '{print $2}' | cut -c6
Com relação à solução Python que alguém postou, ela não funciona no Jython porque a JVM trata tudo como Big. Se alguém puder fazê-lo funcionar no Jython, por favor poste!
Além disso, eu encontrei isso, o que explica o endianness de várias plataformas. Alguns hardwares podem operar nos dois modos, dependendo do que o O / S selecionar: link
Se você for usar o awk, esta linha pode ser simplificada para:
echo -n I | od -to2 | awk '{ print substr($2,6,1); exit}'
Para pequenas caixas Linux que não têm 'od' (digamos OpenWrt), então tente 'hexdump':
echo -n I | hexdump -o | awk '{ print substr($2,6,1); exit}'