까다로운 재귀 bash 별칭인가요? 처음 사용할 때 설치

까다로운 재귀 bash 별칭인가요? 처음 사용할 때 설치

이것이 가능한지 궁금합니다. 별칭을 만들고 명령이 아직 존재하지 않으면 sudo apt-get을 수행한 다음 별칭을 구현하여 이 변경을 중지합니다.

그래서 저는 이 의미론을 찾고 있어요.

smartalias top = 
     if (not installed htop) then 
        install htop; 
     alias top htop; 
     top

답변1

쉘 기능을 사용할 수 있습니다.

top() {
    if ! type htop &>/dev/null; then
        sudo apt-get install htop
    fi
    htop
}

답변2

Bash에는 이 문제를 해결하는 기존 기능이 있습니다.command_not_found_handle. bash가 외부 명령을 실행하려고 할 때 실행되는 후크입니다. Zsh는command_not_found_handler비슷합니다. 많은 배포판에는 존재하지 않는 명령을 실행하려고 할 때 관련 패키지를 설치하도록 제안하는 bash 설정이 있습니다. 예를 들어 Debian 파생 제품을 사용하고 있는 것으로 나타나므로command-not-found. 이 메커니즘은 배포판에서 제공하는 각 명령에 필요한 별칭을 설정하는 것과 동일합니다.

관련 정보