bash変数を乱数に設定する方法



問題を排除するために楽器を試してください

bashプロンプトで乱数を簡単に生成できます。これを使用して、その数値を変数として設定できます。これは、特定の種類のスクリプトの作成から卓上ロールプレイングアドベンチャーの実行まで、あらゆることに役立ちます。 D&Dキャンペーンを作成する場合でも、強力なbash言語でユーティリティを作成する場合でも、通常は1行のコードで済ませることができます。これは、特定のセキュリティチェックを実行しようとするときにも非常に便利なツールですが、優れたクラッカーはこれらの単純な数値ジェネレータを回避できることを覚えておく必要があります。これらは、特定の種類のパスワードとコードを生成するのに引き続き役立ちます。これは、とにかく物事を安全に保つのに役立つ可能性があります。



これを実現するにはいくつかの方法がありますが、すべての手法がすべての状況に適しているわけではないため、それぞれの方法を調べてテストし、機能することを確認しました。これにはターミナルから作業する必要があるため、Ctrl + Alt + TまたはSuper(Windows)+ Tを使用してグラフィカルターミナルを開き、ダッシュにターミナルと入力して開始し、アプリケーションまたはウィスカーから選択します。およびシステムツールメニューを使用するか、Ctrl、Alt、およびF1とF6の間のキーを使用して、本格的に仮想端末に移動します。



方法1:完全なランダムバイトを選択する

bashプロンプトから直接次のコマンドを実行することにより、1から256までの乱数を生成できます。



-An -N1 -tu1 / dev / urandom

このコマンドが/ dev / urandomではなく/ dev / randomを参照している場合がありますが、この方法で実行したくない場合があります。これにより、他のプログラムが使用中にランダムシードジェネレーターを使用できなくなる可能性があります。プログラムを実行して番号を取得すると、次のように機能することを確認できます。



ranNum = $(($(od -An -N1 -tu1 / dev / urandom)))

これにより、変数ranNumは、実行時に選択された1〜256の数値に設定されます。コマンドラインまたはスクリプト内から実行でき、どちらの方法でも機能するはずです。 ranNumは任意の有効な変数名に置き換えることができることに注意してください。

方法2:変数を1から何でもの間の乱数に設定する

コマンドラインからecho $ [RANDOM%40 + 1]を実行して、1〜40の乱数を標準出力に直接送信できますが、コマンドの40を事実上任意の数に置き換えることもできます。最終的には、ホストマシンのアーキテクチャの桁数が不足するか、bashが不足する可能性がありますが、とにかくこのような大きな数値が必要になるかどうかは疑わしいです。

変数構成に対して1から10の間の乱数を生成したいとします。あなたは実行することができます:

ranNum = $ [RANDOM%10 + 1]

10は、必要な上限値に置き換えることができることに注意してください。この値は包括的です。つまり、10が有効な戻り値です。 1つ減らしたい場合は、CまたはC ++スタイル-1の数学を使用する代わりに、値を9にします。この方法を使用して変数を設定する場合、これらは不要であり、実際には、桁を加算または減算することによって予期しない結果が生成されます。

方法3:単一のランダムビットを選択する

変数を0または1のランダムビットに設定する必要がある場合は、前のコードを次のように変更することをお勧めします。

ranNum = $(($(od -An -N1 -i / dev / urandom)%2))

このコードは、サンプリングした数値に応じて、ranNumを1または0に設定します。 / dev / urandom ファイルは偶数または奇数でした。これは、単純なyesまたはnoの式をいずれかの状態に設定する必要がある場合に役立ちます。

これが作業内容に対して十分にランダムでない場合は、次のコマンドを使用して/ proc / sys / kernel / randomディレクトリを呼び出すと、少しランダムな数値が得られる可能性があります。

ranNum = $((0x $(cut -c1-1 / proc / sys / kernel / random / uuid)%2))

ただし、繰り返しになりますが、これは変数を1または0に設定するだけです。これは、バイナリロジックには最適ですが、より長い数値が必要になる場合にはあまり役立ちません。ただし、必要に応じて、bashスクリプトでこれらの行のいずれかを使用できます。この2番目のオプションは、最初のオプションも失敗する状況に実際に適している可能性があります

方法4:乱数を返すbashスクリプトを作成する

いつでも乱数を生成するための便利なツールが必要な場合は、コマンドラインスクリプトを作成して作成できます。これは、ほとんどの最新のLinuxプロンプトが持っている標準のbash言語を使用するだけなので、ほとんどすべての最新のLinuxディストリビューションと、かなりの数のBSDベースのオペレーティングシステムがこれをうまく処理するはずです。先に進む前にcd〜 / .local / binを使用して、どこからでも実行できる場所にスクリプトがあることを確認することをお勧めします。

開始するには、nanorandomまたはvirandomと入力しますが、必要に応じて、スクリプトに別の名前を使用することもできます。必要に応じて、別のテキストエディタを使用することもできます。コマンドラインで入力したときに1または0を返すものを作成したいとします。次のように入力し、Ctrl + Oを押して、nanoを使用している場合は保存します。

#!/ bin / bash ranNum = $(($ RANDOM%2))echo $ ranNum

Ctrl + Xを入力してテキストエディタを終了し、コマンドラインに戻ったらchmod + xランダムを使用してスクリプトを使用できるようにします。もちろん、ranNum = $(($)の代わりに、ranNum = $ [RANDOM%10 + 1]、ranNum = $(($(od -An -N1 -tu1 / dev / urandom)))またはその他の行を使用できます。ランダム%2))したがって、どの種類の番号を戻したいかを正確に制御できます。定期的に1から50までの数字を選択したいとします。 bashスクリプトのテキストを次のように変更します。

#!/ bin / bash ranNum = $ [RANDOM%50 + 1] echo $ ranNum

乱数を生成するときはいつでも、randomと入力することで、コマンドラインから簡単に実行できるようになりました。

読んだ4分