Например, для создания имени для временного файла.
cat "/dev/urandom"|tr -dc 'a-zA-Z0-9'|head -c 10
1. Читаем cat
‘ом случайную информацию из /dev/urandom
(из /dev/random
получится очень медленно), далее передаем ее tr
.
2. Опция -d
команды tr
, означает, что символы нужно удалить, а опция -с
показывает, что символы должны быть кроме присутствующих в наборе. Вторым параметром передается набор ('a-zA-Z0-9
‘), т.е. будут удалены все символы, не соответствующие набору. Т.е. останутся только латинские строчные, латинские заглавные и цифры.
3. Команда head
вырезает из переданных ей данных нужное количество символов. Опция -c
указывает команде, что нужно вырезать нужное количество байт (иначе, команда работает со строками). Латинские символы, что в UTF-8, что в однобайтовых кодировках, занимают по 1 байту.
#!/bin/bash
LENSTR="10"
RANDSTR=`cat "/dev/urandom"|tr -dc 'a-zA-Z0-9'|head -c "$LENSTR"`
echo "Random string (length=$LENSTR): $RANDSTR"
Пример вывода:
./randstr
Random string (length=10): e6OFDphzTh
./randstr
Random string (length=10): vF6jJEhOMi
./randstr
Random string (length=10): H0edJFIYte