トリッキーな再帰 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パック。このメカニズムは、ディストリビューションが提供する各コマンドに必要なエイリアスを設定するのと同じです。

関連情報