やりたいこと
自分で作ったコマンドに引数を持たせて汎用的に使えるコマンドを作りたい。
環境
- zsh
- mac
1. aliasの作り方
まずは基本となるaliasの作り方
zshの場合設定ファイルは.zshrc
なので、vimとかで.zshrc
を開く
以下が基本文法
alias コマンド名='実行したいコマンド'
.zshrc
を変更したら、source .zshrc
として設定を反映させることを忘れないように。
2. コマンドを作ってみる
例えば、hoge
と入力したら、文字列でhello world
がechoされるコマンドを作るとしたら、以下のようになる。
.zshrc
を開き最終行に以下を入れる
alias hoge='echo hello world'
source .zshrc
を実行して反映
ターミナルでhoge
と入力すると、以下のように表示されればOKです。
hello world
3. 引数を設定したコマンドを作る
先ほど作ったコマンドに引数を持たせて、hello world 引数の値
と返ってくるようにしたいと思います。
.zshrc
を開き、以下のように修正しましょう。
この時にシングルクウォーテーションで囲まないとエラーとなってしまうようです。
基本文法は以下
「$1」が引数で与えられたものに置きかわります。
alias コマンド='(){処理 $1}'
では実際にhello world 引数
というコマンドを作っていきます。
alias hoge='(){echo hello world $1 !!}'
source .zshrc
として設定を反映して、以下のようなコマンドを実行します。
$ hoge Tom
と実行すると、以下のように返ってくることが確認出来るかと思います。
hello world Tom !!
4. 引数を複数設定する
当然引数は複数設定することが可能です。
引数を複数設定する場合は、以下のように書き換えます。
$2
が第二引数に当たるということです。
なので、3つの引数を設定したい場合は、$3
を追記してあげればいいということになります。
alias hoge='(){echo hello world $1 $2 !!}'
source .zshrc
として、以下を実行
$ hoge Tom July
上記を実行して、以下のように返ってくることを確認しましょう。
hello world Tom July !!
5. 使用例
ここまで来ればなんとなく、使い所がイメージできるかと思いますが、例を書いておきます。
長ったらしいdocker
コマンドの一例を出しておきます。
$ docker exec -it コンテナID /bin/bash
aliasを作りましょう。
.zshrc
を開き
alias de='(){docker exec -it $1 /bin/bash}'
設定を反映して、
$ de コンテナID
無事にコンテナにbash接続が出来ているかと思います。
追記
@termoshtt さんよりコメントをいただき、以下のやり方の方が一般的とのことなので、追記しておきます。
hoge () { echo "hello world $1 $2 !!" }
自分が紹介した方法だと関数定義したものをaliasにしていただけだったので、こちらのやり方の方を行うのがいいかと思います。
@termoshtt さんコメントいただきありがとうございます!