例えば,ファイル名に.logが含まれているファイルをすべて消去するよ うな場合,置換機能を使うと効率的に行える.
シェルにはメタキャラクタ(ワイルドカード)を展開して,入力されたファイル 名を置換する機能がある.メタキャラクタとは任意の文字列や任意の1文字を 指定するための特殊な文字のことである.メタキャラクタを利用することによっ て,複数のファイルを効率的に操作できる.メタキャラクタについて次に説明 する.
*-
アスタリスク``*''は0文字以上の任意の文字列を表すメタキャラクタ
である.例えば,*.texはファイル名が.texで終わるすべてのファ
イルを意味する.その際,シェルは*を0文字の文字列としても解釈す
るので,例えばabc*と入力すると,abcという名前のファイルも
操作の対象に含まれる.ただし,*が先頭で用いられた場合には,ファ
イル名が``.''で始まるファイルは含まれない.
% ls -a<RET> ./ .mathmatics economics.tex micro.c ../ .statistics macro.tex micro.tex % ls *.tex<RET> economics.tex macro.tex micro.tex % ls m*<RET> macro.tex micro.c micro.tex % rm *<RET> % ls -a<RET> ./ ../ .mathmatics .statistics % _
?-
クエスチョンマーク(?)は任意の1文字を表すメタキャラクタである.
この1文字はアルファベットでも数字でもよいが,*と異なり,必ず1文
字存在していなければならない.例えば,m?cro.texという指定には,
mcro.texは含まれない.
% ls<RET> economics.tex macro.tex micro.c micro.tex mcro.tex % ls m?cro.tex<RET> macro.tex micro.tex % _
[ ]-
[ ]は文字候補を指定するメタキャラクタである.[ ]の中に文字を列挙
すると,その中のものを当てはまる文字の候補として表すことができる.例え
ば,[tex]は,tかeかxのうちの1文字を表す.
``-''を用いて範囲で表すこともできる.[a-z]はアルファベッ
ト1文字,[0-9]は数字1文字を表す.なお,候補の文字列の前に
``^''を用いると,[ ]の中に列挙されていない文字を表す.例
えば[^tex]は,tかeかx以外の文字を表す.
[ ]の場合は1文字だったが, の中にカンマ(,)
で区切って文字列を列挙すると,その文字列を候補として扱うことができる.
例えば,aux,logは,auxかlogのどちらかを表す.
``~''は,ホームディレクトリを表す.``~ログイン名''とすると,
そのログイン名を持つユーザのホームディレクトリを表すが,
ログイン名を省略すると自分のホームディレクトリを表す.