例えば,ファイル名に.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のどちらかを表す.
``~
''は,ホームディレクトリを表す.``~
ログイン名''とすると,
そのログイン名を持つユーザのホームディレクトリを表すが,
ログイン名を省略すると自分のホームディレクトリを表す.