bashで引数つきのエイリアスを設定する

Tetsuro Aoki 6,604views 更新:2015年1月27日

引数つきのエイリアスを設定するとき、$1や$2を用いますが
bashの場合引数が思い通りに展開しないことがあるようです。
例えば以下の様なエイリアスを作成しようとすると、

alias sshec2='ssh -i ~/.ssh/id_rsa ec2-user@$1'

以下のように引数と@の間にスペースが入ってしまいエラーとなります。

ssh -i ~/.ssh/id_rsa ec2-user@ ***.***.***.***

このようなケースではエイリアスの代わりに関数を用います。.bashrc内で以下のように定義します。

function sshec2() {
  command ssh -i ~/.ssh/id_rsa ec2-user@$1
}

これで引数つきのエイリアスを擬似的に再現することができます。
内部で用いられているcommandは関数やエイリアス以外のコマンドを優先して実行するためのコマンドです。
今回のケースではあまり重要ではありませんが関数名(エイリアス名)をlinuxコマンドと同じものにしたい場合は
commandをつけないと自らを再帰的に呼び出してしまうので必要です。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません