Nein, in bash
, Aliase arbeiten an einzelnen Wörtern. Also, es sei denn, Sie tun möchten:
alias 0x00='echo 00000000'
alias 0x01='echo 00000001'
dann bist du es nicht leicht arbeiten in Gang zu bringen. Es kann (für einen begrenzten Bereich) durchgeführt wird, dass die Methode von der Erstellung eines Skripts on the fly zu beziehen, aber es wird in vielen Aliase führen:
(for i in {0..255} ; do printf "alias 0x%02x='echo %d'\n" $i $i ; done) >xyzzy_$$.sh
source xyzzy_$$.sh
rm xyzzy_$$.sh
Stattdessen würde ich nur entscheiden sich für eine Funktion x
wo Sie tun können:
pax> x ff
11111111
es sind keine weiteren Tastenanschläge, als Sie für 0xff
brauchen würde, und Sie müssen erneut keine Sorge um den Versuch, bash
in zu zwingen, etwas zu tun, es nicht ist Verbündeter zu tun.
pax> x() {
...> val=$(tr '[a-z]' '[A-Z]' <<< $1)
...> BC_LINE_LENGTH=0 bc <<< "ibase=16;obase=2;$val"
...> }
und wie folgt verwendet::
Eine solche Funktion kann erstellt werden
pax> x ff
11111111
pax> x 42
1000010
pax> x cB
11001011
pax> x 457365384563453653276537456354635635326535635345
10001010111001101100101001110000100010101100011010001010011011001010011001001110110010100110111010001010110001101010100011000110101011000110101001100100110010100110101011000110101001101000101
Notiere die Verwendung von tr
Alphas in Groß Werte zu zwingen. Ohne das werden Sie wahrscheinlich Probleme mit bc
bekommen, die sie als gültige Hexadezimalziffern erkennen.
Beachten Sie auch die Einstellung von BC_LINE_LENGTH
bc
von Auto-Verpackung mit sehr großen Zahlen zu verhindern, wie die letzten, wo man sonst sehen:
pax> y 457365384563453653276537456354635635326535635345
10001010111001101100101001110000100010101100011010001010011011001010\
01100100111011001010011011101000101011000110101010001100011010101100\
0110101001100100110010100110101011000110101001101000101