tcshは非常に使いやすいシェルですが、これくらいは知っておいた方が便利になるという使い方がいくつかあります。
例えば、
>
の状態で↑キーを押すと、直前に実行したコマンドを表示してくれます。
また↑キーでコマンド履歴をさかのぼった後に、↓キーを押すと戻ることができます。
他にも、カーソル移動関係のショートカットとして、
>
Ctrl+a 行の先頭へ移動
Ctrl+e 行の末尾へ移動
Ctrl+u 行を削除
Ctrl+k 現在のカーソル位置から末尾までを削除
Ctrl+d 現在のカーソル位置の文字を削除
Ctrl+b 左へ移動
Ctrl+f 右へ移動
ESC+b 1単語戻る
ESC+f 1単語進む
Ctrl+t カーソルより前の2文字を交換する
Ctrl+p 1つ前のコマンドを取り出す
Ctrl+n 1つ後のコマンドを取り出す
のような機能があります。
また、コンソールorターミナルの画面をクリアしたい時は「Ctrl+l」でクリアできます。
他にも基本的な機能として「Ctrl+c」でプログラムの終了、「Ctrl+z」で実行中のプログラムを中断することが出来ます。ちなみに中断したプログラムを再開したい場合は、
> jvim
Ctrl+z(中断)
Suspended
というように中断し、中断状態にあるものをjobsコマンドで一覧を見ます。
> jobs
[1] + Suspended jvim
中断されたジョブの先頭に付いている数字に注目して、
> fg 1
と入力してやればプログラムを中断した所から再開することができます。
tcshには出力のリダイレクト機能があります。
例えばhogehogeという単語をファイルにリダイレクトすると、
> echo hogehoge > test.txt
> cat test.txt
hogehoge
となります。
上記のように、出力したものをファイルに落としたい場合はリダイレクト記号を使います。
リダイレクト記号は主に「>」と「>>」があり、「>」の方は新規ファイルとして出力し、「>>」は既存のファイルに追加で出力します(無ければ新規作成)。
> echo hogehoge1 > test.txt
> echo hogehoge2 > test.txt
>&nbs;cat test.txt
hogehoge2
> echo hogehoge1 > test.txt
> echo hogehoge2 >> test.txt
>&nbs;cat test.txt
hogehoge1
hogehoge2
このとき「>」でリダイレクト処理をすると、問答無用で既存のファイルが上書きされてしまいます。
既存のファイルを消さないようにエラーメッセージを出すには、
> set noclobber
をtcshに設定します。
常に有効にしておきたい場合は.cshrcに記述します。
> vi ~/.cshrc
set noclobber
またファイル名補完機能がtcshにはあり、
例えば、/etc/fstabというファイルを編集したい時に、
> vi /etc/fs
と途中まで入力してから「TAB」キー、あるいは「ESC」キーを押すと、
> vi /etc/fstab
と自動的にファイル名を補完してくれる機能があります。
これは、ファイルだけでなく、途中のディレクトリなどにも使えます。
ただデフォルトの状態だとファイル名が途中まで同じファイルが2つ以上ある場合、途中で補完が止まってしまい、正確なファイル名がわからない場合に困ってしまうことがあります。
このような時に、自動的に補完リストを表示することがautolistオプションを有効にすることで可能です。
> set autolist
としてやれば、TABあるいはESCキーを使う時に、補完候補であるコマンド、ディレクトリ、ファイルの名前を自動的にリスティングしてくれます。
例えば、/usr/localを開きたかったのだけど、localの単語を忘れてしまった(笑)場合に
> cd /usr/
と途中入力した後に「TAB」キー、あるいは「ESC」キーを押すと、
> cd /usr/
X11R6/ games/ lib/ local/ sbin/ sup/
bin/ home/ libdata/ obj/ share/ tmp/
compat/ include/ libexec/ ports/ src/
のように候補が現れるので、求めているディレクトリの名前がlocalだと言うことが確認できます。
この機能を常に有効にするには.cshrcに記述してやれば良いです。
> vi ~/.cshrc
set autolist
ShiftJISなFTPサーバーにアクセスした時などに、文字コードが日本語EUCのままでは文字化けしてしまうことがあります。
こういう時はShellとターミナルの両方をShiftJISにしてやる必要があります。
Shellであるtcshの文字コードをShiftJISに変えるには、dspmbyteを指定します。
> set dspmbyte sjis
これでtcsh自体はShiftJISになりました。
が、ターミナルなどがShiftJISでは無い場合は意味がありません。
ShiftJISの文字等を扱いたい場合は、例えばktermなら、「Ctrl+中クリック」から「Shift_JIS Mode」にしてやる必要があります。
あるいは、
> kterm -km sjis &
とShiftJISモードで起動してやる必要があります。
なお、tcshを日本語EUCに戻すには、
> set dspmbyte euc
としてやれば良いです。
これらのオプションがどうなっているか確認するには、
> set
と入力すれば、現在tcshに設定されているものの一覧が出ます。
なおtcshはデフォルトでは日本語EUCになっているので、常に設定を固定したい場合は.cshrcに記述してやる必要があります。
> vi ~/.cshrc
set dspmbyte = sjis
また、tcshはCtrl+dを入力する事によって「exit」と同様の動作をします。
例えばsuしたrootの状態でCtrl+dを押すと
#
Ctrl+dを押す
>
このように一般ユーザーに戻るようになっています。
また、一般ユーザーの状態で再度Ctrl+dを押すとログアウトしてしまいます。
この機能はこれはこれで便利なんですが、間違えて押してしまって大変な事になる事もあると思います。
この機能を無効にするには、
set ignoreeof
としてやれば良いです。
また、常に有効にするには.cshrcに記述してやります。
> vi ~/.cshrc
set ignoreeof