Although the other answers appear to explain the way
they ignore one other trick going on here.
The ASCII characters between 0
are 0 1 2 3 4 5 6 7 8 9 : ; < =
You'll notice that the >
was used in the example code, and not the
charactor, though if you do
a one-to-one mapping it looks like =
have been used, and
would be left over.
The reason the could given still works is another bit of
magic -- when tr's replacement list is shorter then its
source list it duplicates the last item of the replacement
list to match, thus the Y
at the end
correspondes to both =
Except with some /something
for more information, of course.