zshの先方予測、リダイレクト

  • 先方予測機能

漢のzsh (6) 漢はだまって先方予測 - あなたはこの機能使いこなせるか | マイナビニュース

autoload predict-on
predict-on

コマンド履歴から学習し、途中までの入力に対してコマンドを予測して表示してくれる。
同じコマンドを引っ張ってくるにも履歴から検索する必要もなくなるし、すげー便利かも。

  • 高機能なリダイレクト

漢のzsh (7) ひと味違うzshのリダイレクト | マイナビニュース

    • 複数ファイルへのリダイレクト

zshは同時に複数のファイルにリダイレクトすることができるらしい。

$ echo hoge > fuga > piyo
$ wc fuga piyo 
       0       0       0 fuga
       1       1       5 piyo
       1       1       5 total
$ 

fugaには何も書き込まれず、piyoにだけ書き込まれる。

% echo hoge > fuga > piyo
% wc fuga piyo
       1       1       5 fuga
       1       1       5 piyo
       2       2      10 total

両方に書き込まれる。

    • 入力リダイレクトからファイルを読む

cat/moreのように読むことができる。

% < fuga < piyo
hoge
hoge

ものすごく急いでいるときにファイルの中身を読みたい、とかだったら使えるかも。急いでるときに思い出せるかどうか分からないけど。
そうでなければ普通にcatで繋げてlessとかの方がいいかも?

      • リダイレクトを使ったファイルのコピー

上記を使えば、以下のようにファイルのコピーを記述することができる。

% < fuga > hoge
% diff fuga hoge
% 

要はfugaをcatした内容をhogeに流し込んでいるだけなんだけど、まぁこういう書き方ができる、ということで。普通はcp使えば良い。

    • パイプとの連携

zshはパイプもリダイレクトの対象になる、とのこと。

% echo hoge > fuga
% < fuga > piyo | cat
hoge

ファイルコピーと同時にパイプに内容を渡している。これはcpコマンドではできない。
使いどころによっては便利かも?

    • リダイレクトとファイルグロブ

そもそも「ファイルグロブ」っていう用語を初めて知った。
UNIXの部屋 コマンド検索:ファイルグロブ (*BSD/Linux)

% touch hoge1 hoge2 hoge3
% < hoge1 < hoge2 < hoge3
% echo hoge > hoge?
% < hoge?
hoge
hoge
hoge

リダイレクト先のファイル名に、ワイルドカードを使って複数指定ができる。これはbashには無い機能。
もちろん、リダイレクトからの入力にも使える。まぁこれは`cat hoge?`で表示させれば普通にできるか。