2. 覚えておくと便利なこと


2.1 コマンド入力の tips

対話的に pointer を使う場合、 コマンドを入力する時に便利に使える機能がいろいろあります。 基本的に tcsh と似ているのですぐに使いこなせると思います。

pointer を使っていると、 同じコマンドや似たコマンドを何度も使いたいことがあると思います。 pointer では過去に使ったコマンドを記憶しているので、 必要に応じて呼び出すことができます。 (csh にならって pointer でも「ヒストリー」と呼んでいます)。 カーソルの上キーを押すと、 最後に入力したものから順にさかのぼって過去のコマンドが表示されます。 ちなみに過去のコマンド行は '$history' という変数に リストとして保存されています。 これを書き換えると、(多分)ヒストリーも変わってしまうはずです。 やったことはありませんが。

また、コマンド行を編集するのに便利な機能もいくつか用意しています。

これらも基本的に tcsh と同じです。 この他の機能は今のところありませんが、 あったほうが便利なようであれば これから追加していきます。 さらにファイル名の補完機能もあります。 補完機能と言うのは、途中までファイル名を書いた時に TAB キーや Ctrl+d を押すと残りのファイル名を付け足してくれたり、 候補を表示してくれたりする機能です。 ファイル名を途中まで書いて TAB や Ctrl+d を押してみましょう。
(ちなみにコマンド名の方の補完はまだできていません。 そのうちに加えようとは思っています。)


2.2 system コマンドと $SYSTEM 変数

pointer を使っている時に、 他のシェルコマンドなどを使いたい場合があります。 たとえば ls でファイルリストを見たいとか、 kterm をもう一つ立ちあげたいとか。 こういったときに、system コマンドを使うことができます。 たとえば
> system "ls -al"
とすると ls の結果が見られるわけです。

もっとも、pointer をよく使うようになってくると system と打つのも面倒になってきます。 実は $SYSTEM という変数の値を 1 なり "true" なり、 真をあらわす値にしておくと、 pointer にないコマンドが入力された場合に 自動的に system を使ってシェルコマンドとして実行してくれます。 つまり、
> $SYSTEM="true"
> ls -al
とすると ls コマンドが pointer 上から起動できるわけです。

ただし一つ注意して欲しいのは、 pointer からシェルコマンドを呼び出した時には .cshrc の内容が反映されないという点です。 csh の仕組みを詳しく知らない方にはむつかしいかも知れませんが、 ふつう csh や tcsh を立ちあげるとまず .cshrc というファイルの 内容が実行されます。 ここで多くの場合 alias などを使ってコマンドを 使いやすくするのですが、 pointer からコマンドを呼ぶ場合は .cshrc の中身を読みません。 したがって例えば rm を rm -i のエイリアスとして 定義しなおして使っている場合、 普通なら
% rm aaa.txt
rm: remove aaa.txt?
のように聞き返してくるのですが、 これを pointer 上で実行するとなにも聞かれずに ファイルを消されてしまいます。 これに関した問題は次節以降にある alias コマンドや .ptrrc ファイルを利用すればある程度解決できます。 もっとも、重要なシェルコマンドは pointer から 実行しない方が無難でしょう。

ちなみに、コマンドを解釈する優先順位は、
(後述する)サブルーチン、pointer のコマンド、 シェルコマンド
の順番です。 つまり、clear や file コマンドのように pointer にも存在する コマンドを実行した場合には、pointer のコマンドとして 解釈されてしまいます。 これをシェルコマンドとして使いたければ、 system コマンドを使って明示的に実行して下さい。


2.3 alias コマンド

シェルではよく使うコマンドに別名(エイリアス)を つけることができます。 よくあるのは rm を rm -i のエイリアスにして、 rm した時に必ず確認を求めるようにする、 ll というエイリアスをつくって ls -l のかわりに 使えるようにしておくなどです。
pointer でも alias コマンドで(ほぼ)同じことができます。 たとえば今あげた例でいけば
> alias rm rm -i
> alias ll ls -l
とすれば同様にエイリアスが作れます。
ただし、pointer の alias はシェルに比べると かなり機能的に劣っていて、 単にコマンド名の部分の文字列を置き換える 程度のことしかできません。
> alias cd "cd; pwd"
のように複数のコマンドをエイリアスにすることもできません。 (こういった点に関しては今後改良していく予定です)。

なお、あるコマンドと同じ名前でエイリアスをつけた場合 (たとえば rm -> rm -i のように)、 コマンドの前に \ (バックスラッシュ)をつければ 元のコマンドとして解釈します。


2.4 .ptrrc ファイル

pointer を日常的に使うようになると、 立ちあげるたびに同じコマンドを打つのが 面倒に感じられることがたびたびあります。 csh では立ち上がる時に自動的にホームディレクトリの .cshrc ファイルに書いてあるコマンドを実行するので、 ここに日常的に使うコマンドを書き込んでおきます。 pointer でこれにあたるのが .ptrrc ファイルで、 やはり .cshrc と同様に起動時に書いてある コマンドを実行します。 ただし .cshrc とひとつ違う点は、 pointer はホームディレクトリの .ptrrc を実行した後、 さらに起動したディレクトリの .ptrrc も実行するという点です。 このため、それぞれのディレクトリで違った作業をする場合に、 作業に合わせてそれぞれ .ptrrc を用意できます。


2.5 version コマンド

pointer はバグを取り除いたり、 機能を追加したりとつねに微妙にバージョンが上がっています。 pointer で version コマンドを入力するか、 起動時に
% pointer -v
とすると、その pointer のバージョンを知ることができます。