Next: 5 入力の終わりとコマンドの強制終了
Up: UNIX 基礎演習 B 組 資料
Previous: 3 困ったときには
Subsections
4 ファイル
決して忘れてはならない事柄があったとします。あなたは紙と鉛筆を用意して
その事柄を紙に書き留めるでしょう。
計算機の世界でも全く同じです。忘れてはいけないことは計算機の中に書き留
めておいて,それを保存しておかなければなりません。UNIX ではファイルと
いう形でこれを保存します
。それではファイルについて学習しましょう。
日常の世界では多くの方は「国語」のノートと「算数」のノートとは別に用意
するでしょう。そしてノートの表紙にはそれぞれの科目名を書いて区別できる
ようにするでしょう。
UNIX の世界でも全く同じです。複数のファイルを所持することができます。
これらのファイルには名前 (ファイル名) がつけられ,ファイル名で区別されます。
- コマンド [と引数] の後ろに「
>
ファイル名」を指定すると,コ
マンドの実行結果は画面に表示されません。その代りに,指定したファ
イル名の新しいファイルができ上がり,そこに結果が書き込まれます。
- ls コマンドは所持するファイルの名前 (ファイル名) を表示するコマン
ドです。
- 「cat ファイル名」を実行すれば,ファイルの内容が表示されま
す。
- コマンド [と引数] の後ろに「
>>
既存ファイルの名前」を指定す
ると,コマンドの実行結果は,指定したファイルに追加されます。
これらのことを,次の操作を通じて確かめてみましょう。
- date コマンドを実行してみましょう。
現在の時刻が表示されましたね。
- date > now を実行しましょう。
何も表示されません。date コマンドの実行結果が now という名前のファ
イルに書き込まれたからです。
- ls を実行してみましょう。
作成したファイルの名前
now が表示されました。
- cat now を実行してみましょう。
予想どおりですか。
- now cat を実行してみましょう。
しかられましたね。
プロンプトに続いては,まずコマンド (cat) を打つ必要があります
8。
- 次に cat dog を実行してみましょう。
cat コマンドの引数には,既存のファイルの名前を与えなければいけません。
- date » now を実行してみましょう。
続いて ls と cat now を実行しましょう。
date コマンドの結果が追加されて,now の内容が 2 行になりましたね。
4.3 ファイル名の変更とファイルの複写・削除
作成したファイルのファイル名を変更したり,
ファイルの内容を別のファイルに複写したり,
ファイルを削除したりできます。
そのためのコマンドは mv, cp, rm です。次の形式で使います。
mv file1 file2 |
file1の名前(ファイル名)をfile2に変更 |
cp file1 file2 |
file1の内容をfile2に複写
(file1と同じ内容を持つファイルfile2を作る) |
rm file |
fileで指定したファイルを削除 |
- 削除したファイルは二度と戻りません。rm コマンドを実行するときには
心を落ち着かせてから <ENTER> を押すことを習慣づけましょう
9。
- cp や mv の最後の引数 (上で file2 と表記したもの) に既存の
ファイルの名前を指定すると,元のファイルは上書きされて無くなりま
す10。このことは「コマンド > ファイル名」でファイルにコ
マンドの実行結果を書き込むときも同様です11。誤って必要なファイルを消さないよ
うに,既存のファイルをよく確認してから実行しましょう。
- また,ls を実行してから cat now を実行しま
しょう。
ファイル now はちゃんとありますね。
- ファイル now の名前を old に変更します。mv now old を実
行してください。名前が変わったか,確認してください。 中身も見てみ
ましょう。
- old と同じ内容のファイル old.copy を作ります。cp old
old.copy を実行してください。ファイルができたか ls で確認してか
ら,old と old.copy の内容を見比べてみましょう。
- old.copy を削除します。rm old.copy を実行してください。
うまくいったか確認してください。
- old の内容を確認してから date > old を実行してみましょう。
ファイル old の内容が書き換えられましたね。
- 続いて old も削除してから,ls コマンドを実行してください。
何も無くなりましたね。
ほとんどのコマンドには,その動作を変更するオプション (option) と呼ばれる
引数を指定できます。
オプションは,通常,-
か --
に続いて指定しますが,どんなオ
プションがあるかは,コマンド毎に違います。
コマンドのオプションは man や jman コマンドを使って調べることができます。
- lsを実行してから,ls -a を実行してみましょう。
-a は ls コマンドのオプションです。 . (ドット) で始まるファイル名
を含めて表示するために使います。
オプション -a を指定して表示された . (ドット) で始まるファイル
は,皆さんがファイルを作る前から予め用意されていたもので,計算機
を正常に使うために必要なファイルです。削除したり,名前を変えたり
しないでください。
- cat .cshrc を実行して,ファイルの内容を表示してみましょ
う。
なにやら書いてありますね。今はそれだけで十分です。
- cat -n .cshrc を実行してみましょう。
cat は -n というオプションを受け付けます。-n は行番号を付
して表示するために使います。
- cal を実行してみましょう。
今月のカレンダが表示されましたか。
- cal > month を実行して,
続いて ls を実行してみましょう。
何が表示されましたか。cal コマンドの出力はどこへ行ったのですか。
- ls -l(エル)を実行してみましょう。
ls コマンドのオプション -l は,ファイルのいろいろな情報を表示し
ますが,今はファイルを最終的に変更した日時がわかることだけ注目す
ることにしましょう。
- ls -a -lを実行してみましょう。
予想どおりの結果が表示されましたか。
- UNIX では / をファイル名に含めることはできません。
- 小文字と大文字は区別されます。UNIX では慣例として小文字のファイル
名を使います。
- .(ドットまたはピリオド)で始まるファイルは多くのコマンドで特別に
扱われます。
当面,英数字と . (ドット),_ (アンダーバー) のみを組み合わせたファイル
名の利用を推奨します。
ただし,ドットで始まるファイル名を使うのは避けた方がいいでしょう。
ファイルはファイル名で識別して操作するものですから,ファイル名はファイル
の内容を連想できるものにしましょう。
ドットやアンダーバーはファイル名を構成する単語を区切るために使うことがで
きます。
- date > a/b を実行してみましょう。
おやおや,しかられてしまいました。
- date > now を実行して,ls を実行しましょう。
続いて date > Now を実行して,ls を実行しましょう。
何が表示されましたか。now と Now は区別されていますか。
- now と Now の内容を見比べてみてください。
- cal 2004 を実行してください。
次に cal 2004 > year_2004 を実行してください。
ファイル名に _ を含むファイルも作れましたね。
4.6 ファイルを扱うその他のコマンド
ここではまず,head, tail, wc コマンドの使い方を学びます。man または jman
コマンドを使って各コマンドの概要(NAME または「名称」欄)を確認してから,
以下を実行してみましょう。
- head year_2004 を実行してみましょう。
次に tail year_2004 を実行してみましょう。
UNIX には頭としっぽがありましたか。
- ファイル month が存在することを確認しましょう。中身も確認しましょ
う。
続いて,wc month を実行してみましょう。
- wc year_2004 を実行してみましょう。
つぎにページャ (pager) という種類のコマンドを使ってみましょう。
ここでは more コマンド
12
を使います。
- more month を実行してください。
cat コマンドと変わりがないようですね。
- more year_2004 を実行してください。
ファイルの最後に到達するまで <SPACE> キーを押してください。
- 今度は more year_2004 を実行したら,q を押してみて
ください。
grep コマンドは引数に与えられた文字や文字列13を含む行を取り出します。
- grep Su year_2004 を実行してください。
続いて,grep Mo year_2004 を試しましょう。
- 今度は grep のオプション -v を試します。
grep -v Su year_2004 を実行してください。
sort コマンドはファイル内の行を並べ替え (sort) します。
- sort year_2004 を実行してください。
- 今度は sort のオプション -r を試します。
sort -r year_2004 を実行してください。
ls |
list directory contents |
cat |
print files |
mv |
move files |
cp |
copy files |
rm |
remove directory entries |
head |
display first lines of a file |
tail |
display the last part of a file |
wc |
word, line, and byte count |
more |
file perusal filter for crt viewing |
grep |
print lines matching a pattern |
sort |
sort lines of text files |
4.8 問題
- あなたがどのような名称のファイルを所持しているか確認してください。
- ファイル Now を削除しましょう。うまくいったか確かめましょう。
- 現在の時刻が入っているファイル Now を再び作りましょう。
- ファイル Now の内容をファイル NOW に複写しましょう。
NOW の内容を確認しましょう。
- ファイル month の内容を確認してから,month を NOW に複写してみま
しょう。NOW の内容を確認しましょう。
- ファイル month の名前を Month に変更しましょう。
うまくいったかどうか,確認しましょう。
- 今月のカレンダーが入ったファイル .month を作成してください。
ls コマンドを使って,作成したファイル名を表示してください。
ファイルの中身も確認してください。
- ファイル NOW と .month を削除してください。うまくいったか確認して
ください。
- echo hakodate を実行しましょう。結果を確認したら,中身が
hakodate であるファイルを作ってください。ファイル名はお任せします。
- echo コマンドを複数回実行して,ファイルの中身が
hakodate
sapporo
asahikawa
kushiro
iwamizawa
であるファイル campus を作ってください。
- ファイル campus から,文字 k を含む行だけを表示してください。
- ファイル campus から,文字 k を含まない行だけを表示してください。
- ファイル campus の中身を,アルファベット順に並べ替えて表示してく
ださい。
- ファイル campus の各行に,行番号を付けて表示してください。
- ファイル campus の内容を,前項で表示した行番号付きの内容に変更し
てください。
- -n という名前のファイルがあったとして,このファイルの内容を cat
で表示するにはどうしたらいいでしょう?
14
少なくともこの問いの正解がわかるまでは15, - で始まる名前のファイルを作らないでください
16。
Next: 5 入力の終わりとコマンドの強制終了
Up: UNIX 基礎演習 B 組 資料
Previous: 3 困ったときには
Hideaki Konno
平成16年11月4日