はじめに
bash等のシェルにおいて、長いコマンドを毎回打つのが面倒なとき、alias を設定しておくと便利です。
また、引数を交えてalias を設定したい場合、関数を定義することにより実現可能です。
関数定義の例
例えば、以下のコマンドを省略したいとします。
docker run -itd --name hoge 7cfg
このとき、状況により変化する引数(hogeと7cfg)があるため、aliasでは対応できません。
その場合、以下のように関数を定義します。
.bashrc
function dockrun(){
docker run -itd --name "$1" "$2"
}
すると、以下のコマンドで実行可能になります。
dockrun hoge 7cfg
1行で定義したいとき
先程の関数は便利ですが、いくつも定義しようとすると行数が多くなり、見通しが悪くなる場合があります。
かといって、単に以下のように定義するとエラーとなります。
.barhrc
function dockrun(){ docker run -itd --name "$1" "$2" }
エラー
source ~/.bash_profile
-bash: ~/.bashrc: line 3: syntax error: unexpected end of file (EOF)
そのため、ワンライナーで書く場合、コマンドの終了を書いてあげる必要があります。
.bashrc
function dockrun(){ docker run -itd --name "$1" "$2"; }
上記はコマンドの最後に; が加わっています。
これで、.bashrc が見辛くなる心配もありません。
ただ、無理矢理1行にするのもよくないので、適宜使い分けましょう。
その他Tips
関数定義に置いいて、function または() のいづれかは省略可能です。
※ () を省略した場合、{ 前のスペースに注意
function dockrun { docker run -itd --name "$1" "$2"; }
dockrun(){ docker run -itd --name "$1" "$2"; }
↧