引数が似たようなコマンドを複数実行したい場合とかあると思います。そういう時は以下のように実行すると書き換えたコマンドを実行できます。
echo nju_nju
# nju3_nju3
history | sed -n 1p | string replace -a nju 純
# echo 純_純
これはecho nju_nju
を最初実行した後、これをecho 純_純
と変換して表示するコマンドです。string replace
は文字を置き換えるためのfish
コマンドで、最初の文字列を後の文字列に変換できます。また、-a
、--all
オプションを使うことですべてのマッチする文字列を後に指定した文字列に変換できます。
ただしこれはまだ変換したコマンドを表示しているだけなので、それを実行する為にeval
を使います。
echo nju_nju
# nju3_nju3
eval (history | sed -n 1p | string replace -a nju 純)
# 純_純
純_純
と得れました。
ちなみにsed -n 1p
の部分を2p
や3p
と変更すると、2つ前や3つ前のコマンドを置換したものを実行できたりもします。