エイリアスとヒストリー

エイリアスとは

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

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

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)でエイリアスをすることができるが、その場合には元のコマンドが使用できなくなるので注意が必要である。

エイリアスの保存

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

  1. vi で ~/.cshrc ファイルを開く。
    % vi ~/.cshrc
  2. ファイルの中に以下の行を追加して書き込んでおく。
    alias cdma cd ~/maya/projects/default/
  3. vi:wq で終了し、以下のコマンドを実行する。
    % source ~/.cshrc
  4. これ以降、cdma を実行すると ~/maya/projects/default/ へ移動する。
    % cdma
    % pwd
    /amt/home0/ad010000/maya/projects/default/

ヒストリーとは

シェルでは過去に実行したコマンドをヒストリーとして、いくつか覚えている。
このヒストリーが覚えているコマンドを再利用すると、効率的にコマンドを入力できる。

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

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

!(コマンドの頭文字), !(コマンド番号), !! などでは Tab を押すことによって実際に実行されるコマンド全体が表示される。

実行例

% 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 が実行される

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

!(コマンドの頭文字):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:s/tmp/test/    vi test1.c tmp2.c tmp3.c が実行される
% !vi:gs/test/tmp/     vi tmp1.c tmp2.c tmp3.c が実行される
% mv !* dir    vi tmp1.c tmp2.c tmp3.c をdirディレクトリに移動

ヒストリーの履歴数

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

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

コマンド補完(completion)

シェルではコマンド・ファイル名などを自動的に補完することができる。
コマンドやディレクトリ・ファイル名を途中まで打ち込んで Tab キーを押すことによって、そのあとの名前をシェルが補ってくれる。 もし、複数の候補が存在する場合は、そのリストを表示する。 候補のリストが表示されない場合は、打ち込んだ頭文字のファイル・ディレクトリが存在しないということである。

コマンド補完の例

Maya の画像ファイルのあるディレクトリへ移動するまでをコマンド補完の機能を使って実行してみよう。

  1. まず、ホームディレクトリへ移動しておく。
    % cd
  2. cd ma と打ち込んで Tab キーを押す。
    % cd ma(Tab)
  3. すると他に頭文字が ma のファイル・ディレクトリが無ければディレクトリ名が補完されて表示される。
    % cd maya/
  4. p と打ち込んで Tab キーを押す。
    頭文字が p のディレクトリは一つではないので、頭文字 p のディレクトリ名のリストが表示される。
    % cd maya/p(Tab)
    prefs/ projects/
  5. 区別がつくように pro と打ち込んで Tab キーを押す。
    % cd maya/pro(Tab)
  6. すると projects が補完されて表示される。
    % cd maya/projects/
  7. 以下、同様にディレクトリ名の頭文字を 1 〜 2 文字程度打ち込んでから Tab キーを押してゆく。
    % cd maya/projects/de(Tab)

    % cd maya/projects/default/

    % cd maya/projects/default/im(Tab)

    % cd maya/projects/default/images
    目的のディレクトリがすべて表示できたら Enter キーを押して実行する。

練習課題

参考


Prev
Home | Contents
abe@injapan.net