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