【zsh】関数化したコマンドで、引数を渡して実行する

01-20-2021

長くなりがちなコマンドを zshalias に指定することは何回もあったが、引数を渡して使うように関数化したことは滅多になかったので設定の仕方を調べてみた

引数を指定したコマンドを作成する

基本的な関数の設定

基本的な関数の指定は以下のようにできる

関数名(){実行したいコマンド}

# example
# 9秒間、処理を遅延する
theworld-dio(){sleep 9}
# 【実行コマンド】
# theworld-dio
# 【実行結果】
# 9秒間、処理を遅延する

.zshrc へ上記のように記載し、 source .zshrc をしてからコマンドの確認ができる

引数を指定した関数の設定

引数を渡して使う関数の場合は以下のように設定する

関数名(){実行したいコマンド $1}

# example
# 引数で指定した数値の秒数間、処理を遅延する
theworld-jotaro(){sleep $1}
# 【実行コマンド】
# theworld-jotaro 11
# 【実行結果】
# 11秒間、処理を遅延する

基本的な関数の設定と同様、 source .zshrc をしてからコマンドの確認ができる

複数の引数を指定したい場合は以下のように設定できる

関数名(){実行したいコマンド $1 $2 $3 ... }

# example
# 実行時に渡した第1引数が文字列として表示され、第2引数の数値だけ処理が遅延され、最後に既定の文字列が表示される
time-stop-stand(){echo $1 && sleep $2 && echo Toki Wa Ugokidasu }
# 【実行コマンド】
# time-stop-stand Star\ Platinum\ The\ World! 11
# $1がStar\ Platinum\ The\ World!、$2が11
# 【実行結果】
# Star Platinum The World! が表示される
# 11秒間、処理を遅延する
# Toki Wa Ugokidasu が表示される

さいごに

既定のパスにログを吐き出すとか同じオプションで渡す値だけ違うときとかに重宝して使えそうだと思った