Sur un système Big Endian (Solaris sur SPARC)
$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6
0
Sur un système little endian (Linux sur x86)
$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6
1
La solution ci-dessus est astucieuse et fonctionne parfaitement pour Linux *86 et Solaris Sparc.
J'avais besoin d'une solution Shell uniquement (pas de Perl) qui fonctionne également sur AIX/Power et HPUX/Itanium. Malheureusement, les deux derniers ne jouent pas franc jeu : AIX rapporte "6" et HPUX donne une ligne vide.
En utilisant votre solution, j'ai pu créer quelque chose qui fonctionnait sur tous ces systèmes Unix :
$ echo I | tr -d [:space:] | od -to2 | head -n1 | awk '{print $2}' | cut -c6
En ce qui concerne la solution Python que quelqu'un a postée, elle ne fonctionne pas en Jython car la JVM traite tout comme un Big. Si quelqu'un parvient à la faire fonctionner en Jython, merci de le signaler !
J'ai également trouvé ceci, qui explique l'endiannité des différentes plateformes. Certains matériels peuvent fonctionner dans l'un ou l'autre mode en fonction de ce que le système d'exploitation sélectionne : http://labs.hoffmanlabs.com/node/544
Si vous utilisez l'awk, cette ligne peut être simplifiée :
echo -n I | od -to2 | awk '{ print substr($2,6,1); exit}'
Pour les petites machines Linux qui n'ont pas de 'od' (comme OpenWrt), essayez 'hexdump' :
echo -n I | hexdump -o | awk '{ print substr($2,6,1); exit}'