自分用のメモ。だいたいBashのman pageの翻訳。
Zshでも基本的に使えるがエラー時の挙動が違うときがある。
イベント指示子
これがあればとりあえず動く。
!n
# nで指定したコマンド履歴を呼び出す。nは自然数。履歴のhistoryコマンド。!-n
# n個前のコマンド履歴を呼び出す。nは自然数。!!
# 直前のコマンド履歴を呼び出す。'!-1'と同義。
!string
# stringから始まる直近のコマンド履歴を呼び出す。
!?string?
# stringを含む直近のコマンド履歴を呼び出す。
# string の直後が改行文字ならば最後の?は省略可。
^string1^string2^
# 直前のコマンドに含まれるstring1をstring2に置換したうえで再実行。
# '!!:s/string1/string2/'と同義。
!#
# コマンドラインの行頭から"!#"までの入力。
# 説明しづらいので以下の例を参照。$ echo aaa !# bbb
aaa echo aaa bbb
$ echo aaa !# bbb !# ccc
aaa echo aaa bbb echo aaa echo aaa bbb ccc
単語指示子
イベント指示子直後に”:”をつけ、さらに単語指示子をつけることで、コマンド履歴の特定の引数を再利用できる。”^, $, *, -, %”については”:”を省略可。
0
# 数字の0。コマンドそのもの。n
# nは自然数。n番目の引数。^
# 最初の引数。1と同義。$
# 最後の引数。%
# 直近に実行した'!?string?'の履歴から実際にstringを含む引数を再利用する
# '!?string?:%'という使い方くらいしか思いつかない。x-y
# x,yは0以上の整数、あるいは^、あるいは$。指定範囲の引数の全て。
# "0-y"は"-y"に省略可。*
# 0番目(コマンドそのもの)を除く全引数。"1-$"と同義。
# 引数が無い履歴にこの指示子を使うと、Bashでは空文字列、Zshではエラーが返る。x*
# xは0以上の整数。"x-$"と同義。x-
# xは0以上の整数。"x-$"から最後の引数を除外したもの。