GNU/Linux >> Linux の 問題 >  >> Linux

ランダムを使用してbashでランダムな文字列を生成する

パラメータ展開を使用します。 ${#chars} 可能な文字数、% モジュロ演算子です。 ${chars:offset:length} offset の位置にある文字を選択します 、つまり、この場合は 0 - length($chars) です。

chars=abcd1234ABCD
for i in {1..8} ; do
    echo -n "${chars:RANDOM%${#chars}:1}"
done
echo

32 バイトの (たとえば) 16 進文字列を生成する別の方法:

xxd -l 32 -c 32 -p < /dev/random

-u を追加 代わりに大文字が必要な場合。


bash でランダムな英数字の文字列を探している場合:

LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 64

十分に文書化された関数と同じ:

function rand-str {
    # Return random alpha-numeric string of given LENGTH
    #
    # Usage: VALUE=$(rand-str $LENGTH)
    #    or: VALUE=$(rand-str)

    local DEFAULT_LENGTH=64
    local LENGTH=${1:-$DEFAULT_LENGTH}

    LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c $LENGTH
    # LC_ALL=C: required for Mac OS X - https://unix.stackexchange.com/a/363194/403075
    # -dc: delete complementary set == delete all except given set
}

Linux
  1. 自動化のためのBashの使用

  2. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  3. SedでBash文字列変数への参照を使用しますか?

  1. 辞書を使用した文字列の置換?

  2. Bashスクリプトで文字列を分割する方法

  3. bash のテキスト文字列を配列に変換する

  1. BashスクリプトでのLinuxスリープコマンドの使用

  2. Bash初心者シリーズ#9:Bashでの関数の使用

  3. 「bash -c」は何をしますか?