【2】tcsh環境におけるコマンド行の編集機能

login → 自動的にシェル起動 (c shell) →  % (c shellでのシェルプロンプト)  (←  コマンド入力を促す)

                             born, korn shellでは  $

 

コマンドが入力されると、入力された文字列をいったんシェルが受け取って解釈を行い、必要な処理だけをカーネルに依頼する →  コマンド入力に

関する使い勝手はシェルの種類によりかなり異なる

 

tcsh: 広く使用されてきたcshに、コマンド行の編集、コマンド名補完、スペル訂正、対話的履歴検索などの各機能を追加して、cshの操作性を大幅に改善したもの

 

2.1 tcshの起動

現在使っているシェルがtcshなら、次のコマンドにより確認できます

%echo $version

 

[tcshへの変更]

@%tcsh     でtcshが起動する

( %exit      終了 [C-shellへもどる])

(A @のやり方ができない場合、%chsh により表示されたいくつかのシェルから選択できる場合もあります)

                    

2.2 カーソル移動、コマンド文字列の編集 (emacsとほぼ同じ)

           

キー

動作

C-b            1文字左へカーソルを移動
C-f           1文字右へカーソルを移動
C-d           カーソル位置の1文字削除
C-h(BS, Del)   カーソル前の1文字削除
C-k            カーソル以降行末までを削除
C-@            現在のカーソル位置にマークを設定
C-w            領域(マークからカーソル位置まで)を削除
C-y            削除文字列の貼りこみ
M-b            1単語左へカーソルを移動
M-f            1単語右へカーソルを移動
M-d            カーソル位置の1単語削除

        

2.3 過去に入力したコマンドの再利用

  過去に入力したコマンドの中から、再利用したいものをコマンド行へ呼び出し適当に修正を加えた後、再実行させることができる

 

  %C-p   (直前に実行したコマンドラインを表示。続けて押すことで、順に古い履歴へと遡っていける)

  %C-n     (行き過ぎた時に、1つ新しい履歴へ逆に戻る)

       

  実行したいコマンドラインが現れている状態でリターンキーを押せば、そのコマンドラインが実行できる。

 

より効率よく履歴をたどる手段

  %history    (tcshが保存してるコマンド履歴は、historyコマンドで一覧表示される)

 

2.4 ディレクトリスタック

複数のディレクトリ間を頻繁に cd コマンドで移動するのは大変です。その場合は、ディレクトリスタックに必要なディレクトリを登録しておけば、pushdコマンドにより容易にディレクトリ間を移動できます。それには3つのコマンド pushd(push directory), popd(pop directory), dirs(directory stack) を使います。

 今、次の4つのディレクトリを頻繁に移動して作業をする必要があるとします

/group1/user1(カレントディレクトリ)
/group1/user1/dir1
/group1/user1/dir1 /subdir1
/group1/public

%pwd

  ~     <--- カレントディレクトリ

% pushd ../public   (/group1/public を ディレクトリスタックの先頭に積み、スタックの内容 [自動的に積まれるカレントディレクトリと今、積んだ /group1/public] を表示する)

/group1/public ~

% pushd ~/dir1      (さらに ~/dir1 をディレクトリスタックの先頭に積む)  

~/dir1 /group1/public ~

% pushd ~/dir1/subdir1   (さらに ~/dir1/subdir1 をディレクトリスタックの先頭に積む。これで4つのディレクトリが登録された)  

~/dir1/subdir1 ~/dir1 /group1/public ~

% dirs   (現在のディレクトリスタックの内容を表示する。先頭のディレクトリが現時点でのカレントディレクトリです。

先頭からのディレクトリを順番に、0,1,2,3の位置と呼びます)

~/dir1/subdir1 ~/dir1 /group1/public ~

% pushd   (スタックの先頭2つを入れ替える)

~/dir1 ~/dir1/subdir1 /group1/public ~

% pushd +2  (2の位置にあるディレクトリをスタックの先頭にします)

/group1/public  ~/dir1 ~/dir1/subdir1 ~

% pwd

/group1/public 

%popd   (先頭のディレクトリを取り除き、新しい先頭のディレクトリに移動する)

~/dir1 ~/dir1/subdir1 ~

 

TOPへ戻る