Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
Linux. Получение случайной строки из английских строчных, заглавных букв и цифр.

Например, для создания имени для временного файла.

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


Скрипт на GitHub

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2020/11/18/linux-poluchenie-sluchajnoj-stroki-iz-anglijskih-strochnyh-zaglavnyh-bukv-i-tsifr/

Tags: ,
Comments

re: "Например, для создания имени для временного файла" -- а чем mktemp не угодил?

Та можно и его, вроде везде есть.