27
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zsh環境で引数を持ったコマンドを作る

Last updated at Posted at 2018-03-22

やりたいこと

自分で作ったコマンドに引数を持たせて汎用的に使えるコマンドを作りたい。

環境

  • 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 さんコメントいただきありがとうございます!

27
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?