UNIX/便利な技/tcshの技

Top > UNIX > 便利な技 > tcshの技

tcsh の技です。 tcshcsh の拡張です。csh と比べ、コマンドライン編集機能等が改善され、ユーザインタフェースが強化されています。例えば、コマンドラインを十字キーで左に戻ることができるようになったり、さらにカーソルキー上、下を押すと以前実行したコマンドが表示されて実行できるようになったりします。 より詳しくは読みづらいかもしれませんが Manpage of TCSH のページをみるとよいでしょう。

Table of Contents

キー操作 Edit

emacs と共通しているものも多々あると思います。 C というのは Ctrl キーのことです。 また、M というは Meta キー (Esc or Altキー) のことです。 大学の英語キーボードでは Alt キーが ◆ になっていると思います。 また自分でキー操作を設定することも可能です。 設定については .cshrc を参照してください。

C-fカーソルを1文字前方へ移動。→に同じ
C-bカーソルを1文字後方へ移動。←に同じ
C-aカーソルを行頭へ移動
C-eカーソルを行末へ移動
C-wカーソル位置より前方を消去
C-kカーソル位置より後方を消去
C-uすべて消去
C-h or C-8BackSpase
C-yペースト。マウス中クリックに同等
C-cフォアグラウンドで動いているプログラムを中止(重要)
C-zフォアグラウンドで動いているプログラムを中止。その後 bg と打つとバックグラウンドで、fg と打つとフォアグラウンドで起動する。
C-tカーソル位置の文字と1文字前方の文字を入れ替える
C-j or C-mRETURN
C-l端末の clear
C-pヒストリを1つ遡る。↑に同じ
C-nヒストリを1つ進む。↓に同じ
C-iTAB。(tcsh での tab キーは tab 文字ではなく特別な機能を持ちます。)
M-?alias の表示。例えば alias net と、net と入力後 M-? を入力するのは同等の効果
M-hヘルプの表示。コマンドをタイプしてから入力すると簡単ヘルプが表示される
M-<BS>カーソルの左の文字の削除
C-s出力の停止。例えば ypcat passwd などの長い出力を途中で止めることが可能
C-qC-s からの復帰。むしろこちらが重要
C-dカーソル位置の消去。また cd literacy/ と入力後 C-d を入力すると候補が表示される。また、コマンドも同様に候補が表示される
Tab補完機能。例えば literacy というディレクトリがあるとして、cd lit と入力後 Tab キーを入力すると cd literacy のように補完される。コマンド名に対しても同様
カーソルを1文字後方へ移動。C-f に同じ
カーソルを1文字前方へ移動。C-b に同じ
ヒストリを1つ遡る。C-p に同じ
ヒストリを1つ遡る。C-n に同じ

ヒストリ機能 Edit

!! Edit

一番最近使ったコマンドを意味します。

% ls
% !!
ls
% which !!
which ls

![characters] Edit

コマンドの先頭に [characters] が付く最新のコマンドを意味します。

% ls -a
% locate test
% !l
locate test
% !ls
ls -a

![num] Edit

指定したヒストリ番号のコマンドを意味します。 番号は history コマンドで調べます。

% history
   296  10:47   man -l history
   297  10:47   man -M /usr/man/ja history
   298  10:48   history
% !296
man -l history

^[old]^[new] Edit

直前のコマンドの文字列 [old] を [new] で置き換えた文字列を実行します。

% more aho.txt aho2.txt
% ^aho^baka
more baka.txt aho2.txt

変更は1箇所だけです。

全箇所変更したい場合は、下記の :gs/[old]/[new] を使用します。

ヒストリ修飾子 Edit

:[num] Edit

[num] 番目の引数を意味します。最初が 0 です。

% ls -ld ~/public_html
% cd !!:2
cd ~/public_html
% !ls:0
ls

$ Edit

最後の引数を意味します。

% more test.txt
% ls -ld ~/public_html
% ls !$
ls ~/public_html
% ls !!$
ls ~/public_html
% ls !!:$
ls ~/public_html
% less !more:$
less test.txt

:s/[old]/[new] Edit

コマンドの文字列 [old] を [new] で置き換えた文字列を意味します。

% gcc test.c -lm -o test.o
% !gcc:s/test/test1
gcc test1.c -lm -o test.o

変更は最初の1箇所だけです。

:gs/[old]/[new] Edit

コマンドの文字列 [old] を [new] で置き換えた文字列を意味します。全箇所変更します。

% !gcc:gs/test/test1
gcc test1.c -lm -o test1.o

: p Edit

:p 修飾子で実行はせずに確認だけできます。

% gcc test.c -lm -o test.o
% !gcc:s/test1/test0/:p
gcc test0.c -lm -o test0.c ← 実行されない
% !! ← 実行

また、

% set autoexpand

と変数 autoexpand を有効化することにより

% !![tab]

と tab キーを打つことにより展開することができるようになります。

変数展開修飾子 Edit

例えば変数 n が以下のように設定されているとします。

% set n=/usr/local/bin/sample.c

:r Edit

拡張子以外の基本部分が展開されます。

% echo $n:r
/usr/local/bin/sample

:h Edit

先頭 (head) 部分が展開されます。

% echo $n:h
/usr/local/bin

:t Edit

末尾 (tail) 部分が展開されます。

% echo $n:t
sample.c

:e Edit

拡張子 (extension ) 部分が展開されます。

% echo $n:e
c

xrea