Поскольку переменная RANDOM генерирует 15-битное число (от 0 до 32767), вы можете объединить несколько значений RANDOM.
Вам понадобится 48-битное число, поскольку 12 шестнадцатеричных цифр равны 12 * 4 = 48
битам.
Или:
$ printf '%x\n' $(( ((RANDOM<<15|RANDOM)<<15|RANDOM)<<3|RANDOM%8 ))
9142467b46d3
Или:
$ printf '%x' $((RANDOM%4096)) $((RANDOM%4096)) $((RANDOM%4096)) $((RANDOM%4096)); echo
808878c21e19