複数のコマンドでランダムにコマンドを実行するためのbashエイリアス

複数のコマンドでランダムにコマンドを実行するためのbashエイリアス

bash エイリアスや関数を実行して、他のコマンドやエイリアスをランダムに選択して実行する方法を理解するのに役立ちます。

コマンドとエイリアスのリスト、関数エイリアスも事前に知られています。リストのサイズも知られています。

エイリアスに保存されているさまざまなバージョンのASCIIアートがあります。

たとえば、ascii-art-colorless-clear ascii-art-colorless-bg ascii-art-color-clear ascii-art-color-bg

エイリアス全体を入力したくない場合はascii-artと入力し、別名の1つをランダムに選択したいと思います。

この場合、各エイリアスは単純なechoコマンドです。

編集:助けて答えを見つけましたギルキノ。必要な機能は select-random-arguement-to-run() { $(shuf -e "$@" -n 1) } です。

ランダムなエイリアスを選択して実行します。

alias ascii-art="select-random-arguement-to-run "ascii-art-colorless-clear" "ascii-art-colorless-bg" "ascii-art-colored-clear" "ascii-art-colored-bg""

これには、以前にbashrcファイルで定義されたselect-random-arguement-to-run関数が必要です。

答え1

私は何をしますか?ツール:

$ cat commands.list
rcp
scp
ssh

パスワード:

$ shuf commands.list | head -n1
ssh # random command

関数を定義します。

$ myfunc(){ shuf commands.list | head -n1; }

次の関数を呼び出します。

$ myfunc

答え2

Gilles Quenotの言葉によると(Gilles Quenotの回答)

これは私のbashエイリアス/関数で動作する答えです。

run-random-command() {
    $(shuf -e "$@" -n 1)
}

$(run-random-command "echo hi" "echo bye" "ls")を実行すると、byeまたはhiが端末に印刷されるか、lsが実行されます。これは次のとおりです。

$(shuf -e "echo hi" "echo bye" "ls" -n 1)

ご存知のように、shufはコードのテキストを返すため、$()はshufが返したテキストを実行するために使用されます。

関連情報