logo
 
cpacer

3.1 コマンドの一覧と前提知識

次にUNIXでの ファイル・ディレクトリ操作において基本的なコマンド一 覧と必要な知識を説明します.


表 3.1: コマンドの一覧
目的 コマンド ページ
ファイル・ディレクトリの一覧表示 ls [*]
カレントディレクトリへの絶対パスを表示 pwd [*]
カレントディレクトリの変更 cd [*]
新しいディレクトリの作成 mkdir [*]
ファイル・ディレクトリの削除 rm,rmdir [*]
ファイル・ディレクトリのコピー cp [*]
ファイル・ディレクトリの移動 mv [*]
ファイル・ディレクトリへのリンク ln [*]
ファイルの内容を表示 more,less [*]

3.1.1 引数としてのファイル・ディレクトリ指定

上記のコマンドの引数としてファイル・ディレ クトリを指定する場合は,絶対パス([*]), 相対パス([*])のどちらでも指定できます. パスを省略した場合や, `./ ファイル・ディレクトリ名'とした場合には カレントディレクトリのファイルやディレクトリを表します. `../' は1つ上のディレクトリを表します.

3.1.2 ワイルドカードとメタキャラクタ

``ワイルドカード''や``メタキャラクタ''とは任意の文字列や任意の1文字を指定するための特殊な文字のことです. ワイルドカードやメタキャラクタを利用することによって, 複数のファイルを効率的に操作できます. 次にそれぞれの使用例を示します.

3.1.2.1 0文字以上の任意の文字列を表すワイルドカード `*'

`*' (アスタリスク) は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
% _

3.1.2.2 任意の1文字を表すワイルドカード `?'

`?' (クエスチョンマーク) は任意の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
% _

3.1.2.3 文字候補を指定するメタキャラクタ `[ ]'

`[ ]'は文字候補を指定するメタキャラクタです. `[ ]'の中に文字を列挙すると, その中のものを当てはまる文字の候補として表せます. 例えば,`[Bbq]'は, `B'か`b'か`q'のうちの1文字を表します. `-'を用いて範囲を表せます. `[a-z]'は小文字アルファベット1文字,`[0-9]'は数字1文字を表します. なお,候補の文字列の前に`^'を用いると, `[ ]'の中に列挙されていない文字を表します. 例えば`[^tex]'は, `t'か`e'か`x'以外の文字を表します.

3.1.2.4 文字列候補を指定するメタキャラクタ `{ }'

`[ ]'の場合は1文字でしたが,`{ }' の中にカンマ(`,') で区切って文字列を列挙すると, その文字列を候補として扱えます. 例えば,`{aux,log}'は,`aux'か `log'のどちらかを表します.

3.1.2.5 ホームディレクトリを表すメタキャラクタ ` '

`~'は,ホームディレクトリを表します.`~ログイン名'とすると, そのログイン名を持つユーザのホームディレクトリを表しますが, ログイン名を省略すると自分のホームディレクトリを表します.

ワイルドカードやメタキャラクタをファイル名に含むと, ファイルの操作が困難になるので注意してください. また,同時に複数のファイルを操作できることは, 便利な反面,操作ミスの影響が大きくなります. 特にファイルの消去などには十分注意してください.

3.1.3 入出力のリダイレクションとパイプ

通常,コマンドはキーボード(標準入力)から入力され, 結果は画面(標準出力)に出力されます. しかし,コマンドの実行結果を利用して次の処理をするときに, 実行結果をファイルや次のコマンドに出力できれば効率的に作業を行えます. シェルは``リダイレクション''と``パイプ''という コマンドの入力や出力を切り替える機能をもっています.

3.1.3.1 リダイレクション

リダイレクションは, ファイルの内容を標準入力として使用したり, 標準出力の内容をファイルに書き込むための機能です. リダイレクションを利用することによって, ファイルの内容をコマンドに入力したり, コマンドの実行結果をファイルに書き込めます. リダイレクションには, `<'や `>'を用います.

3.1.3.2 パイプ

パイプは, ある1つのコマンドの標準出力を次のコマン ドの標準入力として使用する際に利用します.

次の例では, `ls -l'の標準出力を次の lessコマンド([*]) の標準入力として利用しています. こうすることで, lsコマンドの出力が1画面以上の長さにわたる場合でも, 1画面ごとに止めて見られます.

% ls -l | less  <RET>
% _

パイプは2つ以上のコマンドをつなぎ合わせられます. なお, パイプの後に`&'をつけると, コマンドの標準出力だけでなく標準エラー出力も次のコマンドの入力として利用できます(表3.2).

% [コマンド1] | [コマンド2]  <RET>


表 3.2: パイプの種類
記号 意味
| 標準出力のパイプ
|& 標準出力と標準エラー出力のパイプ

コマンドの入力と出力先に同じファイル名を指定してはいけません. 同じファイル名を指定するとファイルの内容が失われてしまいます. リダイレクションによる %既存のファイルへの書き込みや, 上書きを防止するときには, あらかじめシェルで`set noclobber'と入力しておきます.