tcsh教

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

超強力!ヒストリー補完

  • 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を書き足しておきましょう。

頭のいい補完

  • シェル変数 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回押しても補完リストでないよね

  • デフォルトでは補完リストの表示は[Control+D]でできます。
    tsutomu@diana:~> per[^D]
    periodic    perl        perl5       perl5.00503 perlbug     perlcc      perldoc
    tsutomu@diana:~> per

コマンドの終了状態を知りたい

  • バックグラウンドで実行したプロセスが終了した時には終了コードが表示されるけどフォアグラウンドで終了したプロセスの終了状態も見たい。
    set printexitvalue

    これで0以外の終了コードでプロセスが終了するといちいち報告してくれます。

    tsutomu@diana:~> cat /noexist
    cat: /noexist: No such file or directory
    1で終了したよっ

まちがってcdしてしまった

  • cdに引数を与えようとしたのに手が滑って"cd"と打ってしまい、ホームディレクトリに戻ってしまった時。
    cd $owd

    で戻れます。bashなら $OLDPWD にcdすれば戻れます。bashの事なんてどうでもいいんですが。

高速ls "ls-F"

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

[ 編集 | 凍結 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]
Last-modified: 2005-03-18 (金) 03:23:54 (6977d)