* tcsh教 [#q70f4e28]
- tcshが如何にすごいのかの布教活動です。
- ここに書いてあることはtcshのマニュアルに出ていることばかりです。

#contents

** 超強力!ヒストリー補完 [#sf22b33a]
- history-search-backward と history-search-forward でヒストリー補完が行えます。
 bindkey -k up history-search-backward
 bindkey -k down history-search-forward
~ これでヒストリー補完をしてみましょう。現在以下のようなコマンドヒストリーの状態です。
   107  2:58    ls
   108  2:58    mkdir test
   109  2:58    cd test
   110  2:58    vi hoge.c
   111  2:58    cc -Wall -g hoge.c
   112  2:58    vi hoge.c
   113  2:58    vi hoge.h
   114  2:58    vi Makefile
   115  2:58    make
   116  2:58    h
~ この状態で "v" だけ打ってから上キーでヒストリーをたどってみるとヒストリー中の "v" から始まるコマンドのみで絞り込まれます。
 v[up]
 vi Makefile
 vi hoge.h
 vi hoge.c
~ もちろん "vi h"まで打った状態でヒストリーをたどるとさらに絞り込まれます。
 vi h[up]
 vi hoge.h
 vi hoge.c
~ これだけでもtcshを使う価値は十分すぎる程にあると言えるでしょう。tcsh使いたくなってきたでしょう。ニヤニヤ。早速.cshrcに history-search-backward と history-search-forward のbindkeyを書き足しておきましょう。

** 頭のいい補完 [#k007a3ef]
- シェル変数 complete を enhance に設定することで頭のいい補完が行えるようになります。
 set complete = enhance
~ マニュアルによれば以下のように説明されています。
 1) 大文字小文字の区別を無視し、 2) ピリオド、ハイフン、
 アンダスコア (`.', `-', `_')を、単語を分ける記号である
 とみなし、ハイフンとアンダスコアは同等なものとみなします。
~ 次のようなファイルが有る場合、b.t[^D] では "bind.txt" に補完され、re[^D] では "README" に補完されます。
 README                  dhcpd.txt               postgres.txt            user.txt
 apache.txt              pgsql_perl5.txt         qmail.txt               vpopmail.txt
 bind.txt                php.txt                 qmailadmin.txt          webalizer.txt

** tcshってTABを2回押しても補完リストでないよね [#of5511c6]
- デフォルトでは補完リストの表示は[Control+D]でできます。
 tsutomu@diana:~> per[^D]
 periodic    perl        perl5       perl5.00503 perlbug     perlcc      perldoc
 tsutomu@diana:~> per

** コマンドの終了状態を知りたい [#id6396ce]
- バックグラウンドで実行したプロセスが終了した時には終了コードが表示されるけどフォアグラウンドで終了したプロセスの終了状態も見たい。
 set printexitvalue
~ これで0以外の終了コードでプロセスが終了するといちいち報告してくれます。
 tsutomu@diana:~> cat /noexist
 cat: /noexist: No such file or directory
 1で終了したよっ

** まちがってcdしてしまった [#h60e1024]
- cdに引数を与えようとしたのに手が滑って"cd"と打ってしまい、ホームディレクトリに戻ってしまった時。
 cd $owd
~ で戻れます。bashなら $OLDPWD にcdすれば戻れます。bashの事なんてどうでもいいんですが。

** 高速ls "ls-F" [#i96134e7]
- ls を "ls -F" のエイリアスにしているのなら "ls-F" がそのまま代用できます。表示の差異もそんなに違和感は無く、マニュアル曰く、高速らしいです。ls用の別の引数を渡した場合は素直に ls を呼び出すらしいです。僕は使ってません。
 alias ls ls-F

[ 編集 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]