next up previous contents
Next: 5 入力の終わりとコマンドの強制終了 Up: UNIX 基礎演習 B 組 資料 Previous: 3 困ったときには

Subsections



4 ファイル

決して忘れてはならない事柄があったとします。あなたは紙と鉛筆を用意して その事柄を紙に書き留めるでしょう。 計算機の世界でも全く同じです。忘れてはいけないことは計算機の中に書き留 めておいて,それを保存しておかなければなりません。UNIX ではファイルと いう形でこれを保存します 。それではファイルについて学習しましょう。

4.1 ファイル名

日常の世界では多くの方は「国語」のノートと「算数」のノートとは別に用意 するでしょう。そしてノートの表紙にはそれぞれの科目名を書いて区別できる ようにするでしょう。

UNIX の世界でも全く同じです。複数のファイルを所持することができます。 これらのファイルには名前 (ファイル名) がつけられ,ファイル名で区別されます。

4.2 ファイルを作って見てみよう -- ls, cat, >, »

これらのことを,次の操作を通じて確かめてみましょう。
  1. date コマンドを実行してみましょう。
    現在の時刻が表示されましたね。

  2. date > now を実行しましょう。
    何も表示されません。date コマンドの実行結果が now という名前のファ イルに書き込まれたからです。

  3. ls を実行してみましょう。
    作成したファイルの名前 now が表示されました。

  4. cat now を実行してみましょう。
    予想どおりですか。

  5. now cat を実行してみましょう。
    しかられましたね。 プロンプトに続いては,まずコマンド (cat) を打つ必要があります 9

  6. 次に cat dog を実行してみましょう。
    cat コマンドの引数には,既存のファイルの名前を与えなければいけません。

  7. date » now を実行してみましょう。 続いて lscat now を実行しましょう。
    date コマンドの結果が追加されて,now の内容が 2 行になりましたね。

  8. 再度 date > now を実行してから, lscat now を実行しましょう。
    元の now の内容は上書きされて無くなってしまいましたね。 >>> の違いに注意してください。

4.3 ファイル名の付け方

当面,英数字と . (ドット),_ (アンダーバー) のみを組み合わせたファイル 名の利用を推奨します。 ただし,ドットで始まるファイル名を使うのは避けた方がいいでしょう。

ファイルはファイル名で識別して操作するものですから,ファイル名はファイル の内容を連想できるものにしましょう。 ドットやアンダーバーはファイル名を構成する単語を区切るために使うことがで きます。

続いて以下の操作を行って,上記のことを確認しましょう。

  1. date > a/b を実行してみましょう。
    おやおや,しかられてしまいました。

  2. ls を実行しましょう。 続いて date > Now を実行して,ls を実行しましょう。
    何が表示されましたか。now と Now は区別されていますか。

  3. now と Now の内容を見比べてみてください。

  4. cal を実行してください。 次に cal > this_month を実行してください。
    ファイル名に _ を含むファイルも作れましたね。


4.4 ファイル名の変更とファイルの複写・削除 -- mv, cp, rm

作成したファイルのファイル名を変更したり, ファイルの内容を別のファイルに複写したり, ファイルを削除したりできます。 そのためのコマンドは mv, cp, rm です。次の形式で使います。
mv file1 file2 file1の名前(ファイル名)をfile2に変更
cp file1 file2 file1の内容をfile2に複写 (file1と同じ内容を持つファイルfile2を作る)
rm file fileで指定したファイルを削除

注意

  1. 再び ls を実行してから cat now を実行しましょう。
    ファイル now はありますね。

  2. ファイル now の名前を old に変更します。mv now old を実 行してください。名前が変わったか,確認してください。 中身も見てみ ましょう。

  3. old と同じ内容のファイル old.copy を作ります。cp old old.copy を実行してください。ファイルができたか ls で確認してか ら,old と old.copy の内容を見比べてみましょう。

  4. old.copy を削除します。rm old.copy を実行してください。 うまくいったか確認してください。

  5. 続いて old と this_month を削除してください。結果を確認してください。

4.5 コマンドのオプション

ほとんどのコマンドには,その動作を変更するオプション (option) と呼ばれる 引数を指定できます。 オプションは,通常,--- に続いて指定しますが,どんなオ プションがあるかは,コマンド毎に違います。 コマンドのオプションは man や jman コマンドを使って調べることができます。

  1. lsを実行してから,ls -a を実行してみましょう。 -a は ls コマンドのオプションです。 . (ドット) で始まるファイル名 を含めて表示するために使います。

    オプション -a を指定して表示された . (ドット) で始まるファイル は,皆さんがファイルを作る前から予め用意されていたもので,計算機 を正常に使うために必要なファイルです。削除したり,名前を変えたり しないでください。

  2. cat .cshrc を実行して,ファイルの内容を表示してみましょ う。
    なにやら書いてありますね。今は中身を理解する必要はありません。

  3. cat -n .cshrc を実行してみましょう。

    cat は -n というオプションを受け付けます。-n は行番号を付 して表示するために使います。

  4. cal を実行してみましょう。
    今月のカレンダが表示されましたか。

  5. cal > month を実行してみましょう。
    何が表示されましたか。cal コマンドの出力はどこへ行ったのですか。

  6. ls を実行してから, ls -l(エル)を実行してみましょう。
    ls コマンドのオプション -l は,ファイルのいろいろな情報を表示し ます。今はファイルを最終的に変更した日時がわかることだけに注目す ることにしましょう。

  7. ls -a -lを実行してみましょう。
    予想どおりの結果になりましたか。


4.6 ファイルを扱ういろいろなコマンド

ファイルを扱うコマンドはたくさんありますが,ここではまず,head, tail, wc コマンドを紹介します。man または jman コマンドを使って各コマンドの概要 (NAME または「名称」欄)を確認してから,以下を実行してみましょう。

  1. まず cal 2005 を実行してから, cal 2005 > year を実行してください。 cat コマンドでファイル year の中身を確認してください。

  2. head year を実行してみましょう。 次に tail year を実行してみましょう。
    UNIX には頭としっぽがありましたか。

  3. ファイル month が存在することを確認しましょう。中身も確認しましょ う。 続いて,wc month を実行してみましょう。

  4. wc year を実行してみましょう。

つぎにページャ (pager) という種類のコマンドを使ってみましょう。 ここでは more コマンド 13 を使います。

  1. more month を実行してください。
    cat コマンドと変わりがなさそうですね。

  2. 次に more year を実行してください。 ファイルの最後に到達するまで <SPACE> キーを押してください。

  3. 今度は more year を実行したら,q を押してみて ください。

grep コマンドは引数に与えられた文字や文字列14を含む行を取り出します。以下はファイル year の内 容が英数字のみであること前提とします。

  1. grep Su year を実行してください。 続いて grep Oct year を試しましょう。

  2. 今度は grep のオプション -v を試します。 grep -v Su year を実行してください。

sort コマンドはファイル内の行を並べ替え (sort) します。

  1. sort year を実行してください。

  2. 今度は sort のオプション -r を試します。 sort -r year を実行してください。

4.7 コマンドのまとめ

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 問題

  1. あなたがどのような名称のファイルを所持しているか確認してください。

  2. ファイル Now を削除しましょう。うまくいったか確かめましょう。

  3. 現在の時刻が入っているファイル Now を再び作りましょう。

  4. ファイル Now の内容をファイル NOW に複写しましょう。 NOW の内容を確認しましょう。

  5. ファイル month の内容を確認してから,month を NOW に複写してみま しょう。NOW の内容を確認しましょう。

  6. ファイル month の名前を Month に変更しましょう。 うまくいったかどうか,確認しましょう。

  7. 今月のカレンダーが入ったファイル .month を作成してください。 ファイル名の先頭にドットをつけ忘れないように。 ls コマンドを使って,作成したファイル名を表示してください。 ファイルの中身も確認してください。

  8. ファイル NOW と .month を削除してください。うまくいったか確認して ください。

  9. echo hakodate を実行しましょう。結果を確認したら,中身が hakodate であるファイルを作ってください。ファイル名はお任せします。

  10. echo コマンドを複数回実行して,ファイルの中身が
    hakodate
    sapporo
    asahikawa
    kushiro
    iwamizawa
    であるファイル campus を作ってください。

  11. ファイル campus から,文字 k を含む行だけを表示してください。

  12. ファイル campus から,文字 k を含まない行だけを表示してください。

  13. ファイル campus の中身を,アルファベット順に並べ替えて表示してく ださい。

  14. ファイル campus の中身を,アルファベットの逆順に並べ替えて表示し てください。

  15. ファイル campus の中身を,アルファベット順に並べ替えて,ファイル campus_sorted に入れてください。

  16. ファイル campus の各行に,行番号を付けて表示してください。

  17. ファイル campus をファイル campus.bak に複写してください。

  18. ファイル campus の内容を,元の内容に行番号をつけた内容にしてください。

  19. -n という名前のファイルがあったとして,このファイルの内容を cat で表示するにはどうしたらいいでしょう? 15

    少なくともこの問いの正解がわかるまでは16, - で始まる名前のファイルを作らないでください 17


next up previous contents
Next: 5 入力の終わりとコマンドの強制終了 Up: UNIX 基礎演習 B 組 資料 Previous: 3 困ったときには

平成17年12月7日