Bashのマルチワードエイリアス

Bashのマルチワードエイリアス

私は.bashrcに複数の単語のエイリアスを追加しようとしています。もっと具体的に言えば私はapt updateなりたいsudo apt update -y。しかし、複数の単語で構成されるエイリアスを指定する方法がわかりません。次のことを試しましたが、そのうち何も機能しません。

alias 'apt update'='sudo apt update -y'
alias "apt update"='sudo apt update -y'
alias apt\ update='sudo apt update -y'

この問題に対する解決策を知っている人はいますか?

ありがとうございます。

ベストアンサー1

わかりました。

$ alias 'apt update'='sudo apt update -y'
bash: alias: 'apt update': invalid alias name

これは明らかなようです。

同様に、名前にスペースを含む関数やコマンドは使用できません。または可能ですが、使用するときにスペースをエスケープする必要がありますが、これは楽しいことではありません。

簡単な修正は別の名前を使用することです。たとえば、次のように動作します。

alias apt-update='sudo apt update -y'

あるいは、本当にしたい場合は、apt2番目の単語(最初の引数)をチェックする関数を作成することもできます。これはエイリアスと同じでなければならず、apt update foo他のsudo apt update -y fooコマンドはそのまま実行されます。

apt() {
    if [ "$1" = "update" ]; then
        shift        # eat the 'update'
        sudo apt update -y "$@"
    else 
        command apt "$@"
    fi
}

apt updateもちろん、どのパラメータも許可されていませんが、他の同様のパラメータに渡すこともできます。)

おすすめ記事