zshの本を読む(2) - ヒストリー
zshのヒストリー機能について。
ヒストリー展開
文字列に一致する直近のヒストリー。
$ ls /usr bin/ games/ include/ lib/ local/ sbin/ share/ src/ $ ls /usr/local bin/ etc/ games/ include/ lib/ man@ sbin/ share/ src/ $ !ls ls /usr/local bin/ etc/ games/ include/ lib/ man@ sbin/ share/ src/ $
ヒストリーの一覧を見たい場合は、fc -lで。
$ pwd /home/zsh_test $ ls /usr bin/ games/ include/ lib/ local/ sbin/ share/ src/ $ fc -l 165 pwd 166 ls /usr $ !165 pwd /home/zsh_test $ !-3
対象を相対的に指定する。
$ pwd /home/zsh_test $ ls /usr bin/ games/ include/ lib/ local/ sbin/ share/ src/ $ !-2 pwd /home/zsh_test $
現在のコマンドラインで、直前まで入力した項目を繰り返す。
$ echo foo !# echo foo echo foo foo echo foo $
展開ヒストリーの引数
コマンドの実行では、必要に応じてそのコマンドに引数を与える。
ヒストリーとしてはそれらを全て保持するが、ヒストリー展開をするときに特定の引数を指定することができる。
最初の引数を表示する。
$ echo foo "bar baz" hoge foo bar baz hoge $ echo !echo:^ echo foo foo $
2つめの引数を表示する。
$ echo foo "bar baz" hoge foo bar baz hoge $ echo !echo:2 echo "bar baz" bar baz $
最後の引数を表示する。
$ echo foo "bar baz" hoge foo bar baz hoge $ echo !echo:$ echo hoge hoge $
全ての引数を表示する。
$ echo foo "bar baz" hoge foo bar baz hoge $ echo !echo:* echo foo "bar baz" hoge foo bar baz hoge $
2つめ以降の引数を表示する。
$ echo foo "bar baz" hoge foo bar baz hoge $ echo !echo:2* echo "bar baz" hoge bar baz hoge $
1つ目からN-1までの引数を表示する。(Nは引数の数。この場合、N=3)
$ echo foo "bar baz" hoge foo bar baz hoge $ echo !echo:1- echo foo "bar baz" foo bar baz $
ヒストリー編集子
ヒストリーを一部編集して展開することもできる。
直前の最後の引数から親ディレクトリのパスを取得する。(dirname /usr/local/bin/の結果と同じ)
$ ls /usr/local/bin $ echo !!:$:h echo /usr/local /usr/local $
直前の最後の引数から末尾のパス名を取得する。(basename /usr/local/bin/の結果と同じ)
$ ls /usr/local/bin $ echo !!:$:t echo bin bin $
直前の最後の引数から拡張子を取り除いて表示する。
$ ls /etc/apache2/httpd.conf /etc/apache2/httpd.conf $ echo !$:r echo /etc/apache2/httpd /etc/apache2/httpd $
直前の最後の引数から拡張子のみを表示する。
$ ls /etc/apache2/httpd.conf /etc/apache2/httpd.conf $ echo !$:e echo conf conf $
その他
上述の展開処理は、bashでも利用できる。ただし、拡張子のみを表示するeの挙動が異なる。
bashの場合は拡張子の前のドットが含まれる。
$ ls /etc/apache2/httpd.conf /etc/apache2/httpd.conf $ echo !$:e echo .conf .conf $
zshでは、ヒストリーの展開子や編集子を入力したあとにTabを押すと、その時点で展開される。
以下の場合、!$を入力した後にTabボタンを押すと、/usr/local/binに展開される。
$ ls /usr/local/bin $ ls !$ # Tabを押すと、 $ ls /usr/local/bin と変換される
参考
- 作者: 広瀬雄二,A5
- 出版社/メーカー: 技術評論社
- 発売日: 2009/06/17
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 126回
- この商品を含むブログ (35件) を見る