次にUNIXでの ファイル・ディレクトリ操作において基本的なコマンド一 覧と必要な知識を説明します.
上記のコマンドの引数としてファイル・ディレ クトリを指定する場合は,絶対パス(), 相対パス()のどちらでも指定できます. パスを省略した場合や, `./ ファイル・ディレクトリ名'とした場合には カレントディレクトリのファイルやディレクトリを表します. `../' は1つ上のディレクトリを表します.
``ワイルドカード''や``メタキャラクタ''とは任意の文字列や任意の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> ← rmコマンドでファイルを削除する % 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 % _
`[ ]'は文字候補を指定するメタキャラクタです. `[ ]'の中に文字を列挙すると, その中のものを当てはまる文字の候補として表せます. 例えば,`[Bbq]'は, `B'か`b'か`q'のうちの1文字を表します. `-'を用いて範囲を表せます. `[a-z]'は小文字アルファベット1文字,`[0-9]'は数字1文字を表します. なお,候補の文字列の前に`^'を用いると, `[ ]'の中に列挙されていない文字を表します. 例えば`[^tex]'は, `t'か`e'か`x'以外の文字を表します.
`[ ]'の場合は1文字でしたが,`{ }' の中にカンマ(`,') で区切って文字列を列挙すると, その文字列を候補として扱えます. 例えば,`{aux,log}'は,`aux'か `log'のどちらかを表します.
`~'は,ホームディレクトリを表します.`~ログイン名'とすると, そのログイン名を持つユーザのホームディレクトリを表しますが, ログイン名を省略すると自分のホームディレクトリを表します.
通常,コマンドはキーボード(標準入力)から入力され, 結果は画面(標準出力)に出力されます. しかし,コマンドの実行結果を利用して次の処理をするときに, 実行結果をファイルや次のコマンドに出力できれば効率的に作業を行えます. シェルは``リダイレクション''と``パイプ''という コマンドの入力や出力を切り替える機能をもっています.
リダイレクションは, ファイルの内容を標準入力として使用したり, 標準出力の内容をファイルに書き込むための機能です. リダイレクションを利用することによって, ファイルの内容をコマンドに入力したり, コマンドの実行結果をファイルに書き込めます. リダイレクションには, `<'や `>'を用います.
ファイルからデータを読み込んでコマンドに実行させるには, `<'を用います. `<'の左側に実行するコマンドを, 右側にそのコマンドに入力する内容を書いた, ファイルの名前を指定します.
% [実行するコマンド] < [ファイル名] <RET>
コマンドの結果をファイルに出力するには, `>'を 利用します. `>'を 利用したリダイレクションには次の3つの書式があります.
% [コマンド] > [出力するファイル名] <RET> % [コマンド] >> [出力するファイル名] <RET> % [コマンド] >& [出力するファイル名] <RET>
1つめの`>'はコマンドの処理結果をファイルに上書きします. そのため, 同じ名前のファイル名が存在する場合には, 以前の内容は消去されてしまいます.
それに対して, 2つめの`>>'はコマンドの処理結果を, 指定したファイルの末尾に書き加えます.
3つめの`>&'はコマンドの標準出力に加えて, 標準エラー出力をファイルに上書きします. これはエラーメッセージな どをファイルに出力する場合 などに利用しますが, あまり利用することはありません.
次の例では, lsコマンドの出力結果を`result'というファイルに書き込んでいます. なお` >'を利用した場合, コマンドの実行結果はファイルに出力されます.
% ls <RET> ←lsコマンドを実行してカレントディレクトリのファイルを表示} report.tex proposal.gif % ls > result <RET> ←lsコマンドの結果をresultというファイルに格納 % result \<RET> ←resultというファイルの中身を読む report.tex proposal.gif % _
パイプは, ある1つのコマンドの標準出力を次のコマン ドの標準入力として使用する際に利用します.
次の例では, `ls -l'の標準出力を次の lessコマンド() の標準入力として利用しています. こうすることで, lsコマンドの出力が1画面以上の長さにわたる場合でも, 1画面ごとに止めて見られます.
% ls -l | less <RET> % _
パイプは2つ以上のコマンドをつなぎ合わせられます. なお, パイプの後に`&'をつけると, コマンドの標準出力だけでなく標準エラー出力も次のコマンドの入力として利用できます(表3.2).
% [コマンド1] | [コマンド2] <RET>