여러 명령에서 무작위로 명령을 실행하기 위한 bash 별칭

여러 명령에서 무작위로 명령을 실행하기 위한 bash 별칭

bash 별칭이나 함수를 실행하여 다른 명령이나 별칭을 무작위로 선택하고 실행하는 방법을 알아내는 데 도움이 필요합니다.

명령 및 별칭 목록은 물론 함수 별칭도 미리 알려져 있습니다. 목록의 크기도 알려져 있습니다.

별칭에 저장된 다양한 버전의 ASCII 아트가 있습니다.

예를 들어 ascii-art-colorless-clear ascii-art-colorless-bg ascii-art-color-clear ascii-art-color-bg

전체 별칭을 입력하고 싶지 않고 ascii-art를 입력하고 별칭 중 하나를 무작위로 선택하고 싶습니다.

이 경우 각 별칭은 단순한 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가 반환한 텍스트를 실행하는 데 사용됩니다.

관련 정보