エイリアスとヒストリー

エイリアスとは

エイリアスとは、あるコマンドを別の名前で実行できるようにする機能である。
長いコマンドや、複雑なコマンドをエイリアスしておくとコマンドが楽に打ち込めるようになる。

エイリアス関係のコマンド

alias (コマンド1) (コマンド2)
コマンド2をコマンド1で実行できるようにする。
コマンド1の名前は自分の好きなもので良い。
alias (コマンド)
コマンドのエイリアス定義を調べる。
alias
全てのエイリアス定義を調べる。
unalias (コマンド)
コマンドのエイリアスを取り消す。
\(コマンド)
コマンドのエイリアスを一時的に取り消す。

引数の扱い方

\!* という記号をエイリアスの定義の中に含めておくと、そこにエイリアスされたコマンドの引数をあてはめて実行することができる。
ただし、この記号を使用する時は'(シングルクォート)で囲むことが必要である。
(下の実行例を参照)

実行例

% alias vi1 vi test1.c
% vi1     ← vi test1.c が実行される
% alias vi vi test2.c
% vi      ← vi test2.c が実行される
% alias   ← alias の定義をリストアップする
vi1    vi test1.c
vi     vi test2.c
% vi test3.c     ← vi test2.c test3.c が実行される
% \vi test3.c    ← vi test3.c が実行される
% unalias vi     ← vi のエイリアスを取り消す
% alias ccm 'cc \!* -lm'
% ccm test2.c    ← cc test2.c -lm が実行される
% ccm test3.c    ← cc test3.c -lm が実行される
% alias a alias  ← alias を a だけでも実行できるようになる

上の例のように、すでにあるコマンドと同じ名前(ここではvi)でエイリアスをすることができるが、その場合には元のコマンドが使用できなくなるので注意が必要である。

便利なエイリアス

例えば実習室では以下のようなエイリアスを設定しておくと便利かもしれない。

% alias cdma cd ~/maya/projects/default/  cdmaでMayaのプロジェクトディレクトリへ移動

エイリアスの保存

エイリアスの定義は、シェルを終ると(ログアウトしたり、ウインドウを消したり)すると失われてしまう。
毎回、ログインした時に必ず使うエイリアスは ~/.cshrc ファイルに設定しておきたいエイリアスを書き込んでおけば良い。
書き込んだ後、ログアウトしてログインしなおせば、それらのエイリアスが有効になる。 ログアウトするのが面倒な時は以下のコマンドを打ちこんでおけば、すぐにエイリアスが有効になる。

% source ~/.cshrc

ヒストリーとは

シェルでは以前に実行したコマンドをいくつか覚えている。
その覚えているコマンドを再利用すると、効率的にコマンドを入力できる。

ヒストリー関係のコマンドと機能

history
ヒストリーを表示するコマンド
!(コマンドの頭文字)
一つ前のコマンドから過去にさかのぼって、頭文字が一致するコマンドを 探して実行してくれる。
!(コマンド番号)
コマンド番号に相当するコマンドを実行する。
!!
直前に実行したコマンドを実行する。
^文字列1^文字列2
直前に実行したコマンドの文字列1を文字列2に変更して実行する。
!(コマンドの頭文字):s/文字列1/文字列2/
!(コマンド番号):s/文字列1/文字列2/
以前に実行したコマンドの文字列1を文字列2に変更して実行する。
Ctlr+p または
以前に実行したコマンドを順番に表示(ヒストリーをさかのぼって表示)
Ctlr+n または
以前に実行したコマンドを順番に表示(ヒストリーを下って表示)
Ctlr+b または
カーソルを1文字分左へ移動
Ctlr+f または
カーソルを1文字分右へ移動
Ctlr+a
カーソルをコマンドの先頭文字へ移動
Ctlr+e
カーソルをコマンドの最後の文字へ移動

実行例

% history
10 vi test.c
11 cc test.c
12 a.out
13 vi tmp.c
14 cc tmp.c
15 a.out
% !v     ← vi tmp.c が実行される
% !c     ← cc tmp.c が実行される
% !a     ← a.out が実行される
% !10    ← vi test.c が実行される
% !11    ← cc test.c が実行される
% !12    ← a.out が実行される
% vi test1.c
% !!                 ← vi test1.c が実行される
% ^1^2               ← vi test2.c が実行される
% ^test^tmp          ← vi tmp2.c が実行される
% !14:s/tmp/tmp2/    ← cc tmp2.c が実行される

ヒストリーのその他の機能

!(コマンドの頭文字):s/(文字列1)/(文字列2)/
!(コマンド番号):s/文字列1/文字列2/
以前に実行したコマンドの最初の文字列1を文字列2に変更して実行する。
!!:s/文字列1/文字列2/
直前に実行したコマンドの最初の文字列1を文字列2に変更して実行する。
!(コマンドの頭文字):gs/(文字列1)/(文字列2)/
!(コマンド番号):gs/文字列1/文字列2/
以前に実行したコマンドの文字列1を文字列2に全て変更して実行する。
!!:gs/文字列1/文字列2/
直前に実行したコマンドの文字列1を文字列2に全て変更して実行する。
!$
直前に実行したコマンドの最後の引数
!*
直前に実行したコマンドの引数全部
!(コマンドの頭文字):(引数の番号)
!(コマンド番号):(引数の番号)
以前に実行したコマンドの引数
!!:(引数の番号)
直前に実行したコマンドの引数
コマンド名が0番目、引数が1, 2, ... と続く。

実行例

% vi test1.c test2.c test3.c
% cc !$        ← cc test3.c が実行される
% cc !vi:2     ← cc test1.c が実行される
% cc !vi:2     ← cc test2.c が実行される
% cc !vi:3     ← cc test3.c が実行される
% !vi:gs/test/tmp/     ← vi tmp1.c tmp2.c tmp3.c が実行される
% mv !* dir    ← vi tmp1.c tmp2.c tmp3.c をdirディレクトリに移動

ヒストリーの履歴数

ヒストリーによってシェルが覚えておいてくれるコマンドの個数(履歴数)は環境変数を設定することで変えることができる。 この設定も~/.cshrcファイルに書き込んでおけばktermを実行するたびに自動的に設定されるようになる。

% set history = 100  ← 履歴数を100に設定

練習課題

参考


Prev | Next
Home | Contents
abe@injapan.net