Случайная строка представляет собой серию буквенно-цифровых символов, которые не имеют определенного образца. Хотя абсолютной случайной строки не существует, поскольку для ее генерации используется математическая логика, случайные строки могут быть уникальными.
В этом учебнике мы рассмотрим различные способы генерации случайных строк в bash. Эта функциональность может быть полезна при создании имен пользователей, паролей или начальных данных.
Метод 1: md5 Hash
Самый первый метод, который мы можем использовать для генерации случайной строки в bash, - это контрольная сумма md5. В Bash есть переменная $RANDOM, которая генерирует случайное число. Мы можем передать это значение в md5sum, чтобы получить случайную строку.
Для примера:
1 2 | echo $RANDOM | md5sum | head -c 20; echo; |
Переменная $RANDOM всегда случайна. В результате контрольная сумма md5 всегда случайна.
Метод 2: UUID
Вы также можете использовать генератор UUID ядра в /proc/sys/kernel/random/uuid. Это даст вам уникальное шестнадцатеричное значение, которое вы можете преобразовать в случайную строку с помощью команд sed и head:
Например:
1 | cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20; echo; |
Метод 3: Псевдоустройства
Вы слышали фразу: "Все в Linux - это файл". Одной из концепций, которая делает это утверждение верным, является возможность выражать устройства в виде файлов.
Файлы, расположенные в каталоге /dev, известны как псевдоустройства; они служат мостом между ядром и аппаратным обеспечением. Одним из файлов в этом каталоге является файл uradom.
Файл urandom предоставляет интерфейс для доступа к генератору случайных чисел ядра. Следовательно, мы можем использовать его для генерации случайной строки, как показано ниже:
1 2 | cat /dev/urandom | tr -dc '[:alpha:]'' | fold -w ${1:-20} | head -n 1 |
Мы передаем вывод urandom в tr, который генерирует буквенно-цифровые значения, а затем складывает их по ширине до 20 символов. Наконец, мы получаем одну выстроенную строку с помощью head -n.
Чтобы получить сразу несколько значений, измените значение параметра head -n на необходимое количество строк.
1 | cat /dev/urandom | tr -dc '[:alpha:]' | fold -w ${1:-20} | head -n 5 |
Метод 4: Base64
Вы также можете использовать утилиту base64 для генерации случайной строки. Например, используя переменную $RANDOM, мы можем сделать следующее:
1 | echo $RANDOM | base64 | head -c 20; echo |
Метод 5: Псевдослучайные байты OpenSSL
Команда OpenSSL rand позволяет генерировать случайные байты на основе указанного типа. Эти типы включают значения base63 и hex.
Например:
1 | openssl rand -hex 20 |
Или используйте base64:
1 | openssl rand -base64 21 |
Заключение
В заключение, bash предоставляет различные утилиты, которые вы можете использовать для генерации случайных строк. Поэтому все, что вам нужно сделать, это комбинировать различные инструменты и разработать умный способ получения случайных строк, который соответствует вашим потребностям.