ファイル操作練習

練習 その1

以下の手順でファイル操作をしてみよう。途中経過のファイル構成を図に描き、教員・TA・補助員に確認してもらうこと。

準備

まずカレントディレクトリをホームディレクトリに移動する。新しいターミナルウィンドウを開いてもよいし、既に開いているターミナルでcdコマンドでカレントディレクトリを移動させてもよい。pwdコマンドでホームディレクトリを確認しよう。

次に、作業用のファイルを作るために、次のコマンドを実行する。>>は実行結果を指定したファイルに書き出すことを指示する(詳しくは後日紹介する)。

% date >> date.txt

ちゃんと作成できたことを確認しよう。lsで存在を確認し、catで内容を表示させてdateコマンドの実行結果が書き込まれていることを確認する。ファイル名を間違えた場合は、以後の手順の指示を間違えたファイル名に読み替えてそのまま作業を続けてもよいが、ややこしいようならmvコマンドを使って名前を直しておこう。

ここまで、うまくできない場合は手を挙げてヘルプを求めること!!

現在、ホームディレクトリ以下は次の図のような構成になっている(無関係なファイルやディレクトリは省略している)。この図をノートに書き写し、以後の手順ごとに状態の変化を反映するように修正していくこと。

手順

途中で間違えるとリカバリが難しいかもしれない。困ったらヘルプを求めること!!

手順の次の項に途中でわからなくなってしまった場合のリカバリ(復旧)方法を最後に追記しました。

以下のコマンドではディレクトリを指定するときに/を最後に付けて表記しているが、/は無くても同じように動作する。

  1. sampleディレクトリを作成する。
    % mkdir sample/
  2. カレントディレクトリをsampleディレクトリに移動する。
    % cd sample/
  3. カレントディレクトリを確認する。
    % pwd
  4. カレントディレクトリの一つ上のディレクトリにあるdate.txtをカレントディレクトリに移動させる。下記のコマンドの最後の./に注意!! ../date.txtと.の意味をよく考えよう。
    % mv ../date.txt ./
  5. カレントディレクトリのファイル一覧を表示してdate.txtが正しく移動できたことを確認する。
    % ls
  6. カレントディレクトリを一つ上に移動する。
    % cd ..
    (以降、図の掲載は省略する。自分で同じように描いていくこと)
  7. カレントディレクトリを確認する。
    % pwd
  8. カレントディレクトリのファイル一覧を表示して、date.txtが無いことを確認する。
    % ls
  9. カレントディレクトリにある、sampleディレクトリの中のファイル一覧を確認する。
    % ls sample/
  10. カレントディレクトリにreportディレクトリを作成する。
    % mkdir report/
  11. reportディレクトリの中のファイル一覧を確認する。作ったばかりなので空のはず。
    % ls report/
  12. sampleディレクトリの中date.txtをreportディレクトリに移動させる。
    % mv sample/date.txt report/
  13. sampleディレクトリとreportディレクトリの中のファイル一覧を確認して、date.txtが移動できていることを確認する。
    % ls sample/
    % ls report/
  14. カレントディレクトリをreportに移動する。
    % cd report/
  15. カレントディレクトリを確認する。
    % pwd
  16. カレントディレクトリのファイル一覧を確認する。date.txtがあるはず。
    % ls
  17. date.txtを、一つ上位のディレクトリにあるsampleディレクトリに、dateCopy.txtという名前のファイルに複製する。
    % cp date.txt ../sample/dateCopy.txt
  18. カレントディレクトリを一つ上のディレクトリにあるsampleディレクトリに移動する。
    % cd ../sample/
  19. カレントディレクトリを確認する。
    % pwd
  20. カレントディレクトリのファイル一覧を確認する。dateCopy.txtがあるはず。
    % ls
  21. カレントディレクトリをホームディレクトリに戻す。
    % cd
  22. reportディレクトリの中にあるdate.txtの内容を表示させて確認する。
    % cat report/date.txt
  23. sampleディレクトリの中にあるdateCopy.txtの内容を表示させて確認する。report/date.txtと一致しているはず。
    % cat sample/dateCopy.txt
  24. reportディレクトリをsampleディレクトリに移動させる。
    % mv report/ sample/
  25. カレントディレクトリのファイル一覧を表示して、reportディレクトリが無いことを確認する。
    % ls
  26. カレントディレクトリをsampleに移動する。
    % cd sample/
  27. カレントディレクトリを確認する。
    % pwd
  28. カレントディレクトリのファイル一覧をロング表示で確認する。オプションはlongのl(エル)。
    % ls -l
  29. カレントディレクトリをreportに移動する。
    % cd report/
  30. カレントディレクトリにあるdate.txtをホームディレクトリに移動させる。~(チルダ)は、キーボード最上段の右から3つめ、ひらがなの「へ」のキーをShiftを押しながらタイプする。
    % mv date.txt ~/
  31. カレントディレクトリのファイル一覧を表示して空になっていることを確認する。
    % ls
  32. カレントディレクトリを一つ上に移動する。
    % cd ..
  33. カレントディレクトリを確認する。
    % pwd
  34. reportディレクトリを削除する。
    % rmdir report/

    このコマンドを実行すると"Directory not empty"と表示される場合は、これまでの操作を間違ったか、Finder上で何か操作をしてしまったことが原因と考えられる。ヘルプを求めること。

  35. カレントディレクトリを一つ上に移動する。
    % cd ..
  36. カレントディレクトリを確認する。
    % pwd
  37. カレントディレクトリのファイル一覧を確認する。
    % ls
  38. sampleディレクトリを削除する。が、このコマンドは失敗する。理由を考えよう。
    % rmdir sample/
  39. sampleディレクトリにあるdateCopy.txtを削除する。
    % rm sample/dateCopy.txt
  40. sampleディレクトリを削除する。今度は削除できるはず。
    % rmdir sample/

    ここでも失敗する場合は、これまでの操作を間違ったか、Finder上で何か操作をしてしまったことが原因と考えられる。ヘルプを求めること。

  41. カレントディレクトリのファイル一覧を表示する。date.txtのみ残っているはず。
    % ls

途中でおかしくなった場合の復旧方法

この練習ではホームディレクトリにdate.txtというファイルと、sampleとreportというディレクトリを作成しているので、これらを全部消せば元の状態に戻せる。Finderでホームディレクトリを開き、作ったファイルdate.txtとディレクトリsampleを消せばよい(実行状況によっては既に消えていたり、別のディレクトリに移動しているかもしれない)。

なお、この消す操作をコマンドで行うには、次のようにする(ファイルやディレクトリが存在しない場合はエラーになるが問題ない)。

% cd
% rm date.txt
% rm -rf sample

まず、最初にホームディレクトリに戻る(cdコマンド)。次に、作成したファイルを全部消していく。rmのオプション-rfの、-rは中にあるディレクトリも全部、-fは中に何があっても強制的に消去するためのオプションである。つまり、-rfをつけると、rmコマンドでディレクトリも消せ、さらにそのディレクトリの中身を全部消すことができる。このオプションを指定してrmコマンドを実行する際には、うっかり必要なファイルが入ったまま消してしまわないように十分注意しよう。

なお、date.txtを削除した後、もう一度最初から練習をやり直す場合は date >> date.txt などのコマンドで練習用のdate.txtを作成し直すこと。

練習 その2

練習その1と同じ内容で、コマンドを見ずにやってみよう。

  1. sampleディレクトリを作成する。
  2. カレントディレクトリをsampleディレクトリに移動する。
  3. カレントディレクトリを確認する。
  4. カレントディレクトリの一つ上のディレクトリにあるdate.txtをカレントディレクトリに移動させる。
  5. カレントディレクトリのファイル一覧を表示してdate.txtが正しく移動できたことを確認する。
  6. カレントディレクトリを一つ上に移動する。
  7. カレントディレクトリを確認する。
  8. カレントディレクトリのファイル一覧を表示して、date.txtが無いことを確認する。
  9. カレントディレクトリにある、sampleディレクトリの中のファイル一覧を確認する。
  10. カレントディレクトリにreportディレクトリを作成する。
  11. reportディレクトリの中のファイル一覧を確認する。作ったばかりなので空のはず。
  12. sampleディレクトリの中date.txtをreportディレクトリに移動させる。
  13. sampleディレクトリとreportディレクトリの中のファイル一覧を確認して、date.txtが移動できていることを確認する。
  14. カレントディレクトリをreportに移動する。
  15. カレントディレクトリを確認する。
  16. カレントディレクトリのファイル一覧を確認する。date.txtがあるはず。
  17. date.txtを、一つ上位のディレクトリにあるsampleディレクトリに、dateCopy.txtという名前のファイルに複製する。
  18. カレントディレクトリを一つ上のディレクトリにあるsampleディレクトリに移動する。
  19. カレントディレクトリを確認する。
  20. カレントディレクトリのファイル一覧を確認する。dateCopy.txtがあるはず。
  21. カレントディレクトリをホームディレクトリに戻す。
  22. reportディレクトリの中にあるdate.txtの内容を表示させて確認する。
  23. sampleディレクトリの中にあるdateCopy.txtの内容を表示させて確認する。report/date.txtと一致しているはず。
  24. reportディレクトリをsampleディレクトリに移動させる。
  25. カレントディレクトリのファイル一覧を表示して、reportディレクトリが無いことを確認する。
  26. カレントディレクトリをsampleに移動する。
  27. カレントディレクトリを確認する。
  28. カレントディレクトリのファイル一覧をロング表示で確認する。
  29. カレントディレクトリをreportに移動する。
  30. カレントディレクトリにあるdate.txtをホームディレクトリに移動させる。
  31. カレントディレクトリのファイル一覧を表示して空になっていることを確認する。
  32. カレントディレクトリを一つ上に移動する。
  33. カレントディレクトリを確認する。
  34. reportディレクトリを削除する。
  35. カレントディレクトリを一つ上に移動する。
  36. カレントディレクトリを確認する。
  37. カレントディレクトリのファイル一覧を確認する。
  38. sampleディレクトリを削除する。が、このコマンドは失敗する。
  39. sampleディレクトリにあるdateCopy.txtを削除する。
  40. sampleディレクトリを削除する。今度は削除できるはず。
  41. カレントディレクトリのファイル一覧を表示する。date.txtのみ残っているはず。

提出課題

以下の要領で課題を遂行せよ。
期限: 次回授業開始時まで

準備

moodleからfileAdvMAC.zipをダウンロードする。自動的に展開されてfileAdvMacディレクトリがダウンロードフォルダ(あるいはダウンロード時に指定した場所)に作成される。

ターミナルでカレントディレクトリをfileAdvMacディレクトリに移動し、./tryit と入力してコマンドを実行する。
あるいはfileAdvMacディレクトリの中にあるtryitをダブルクリックしてもよい。ダブルクリックで実行した場合、ターミナルが開くので[プロセスが終了しました]というメッセージが表示されたら閉じておく。

正しく実行できると、メッセージが表示され、ホームディレクトリにfile_adventureという名前のディレクトリが作成される。既に存在している場合は一旦削除して新たに作り直される。

課題手順

作成できたら、ターミナルを開き(既に開いている場合はそのまま)、次のコマンドでカレントディレクトリをホームディレクトリの下のfile_adventureディレクトリに移動する。

$ cd ~/file_adventure

その中にreadmeという名前のファイルがあるので、その内容を表示させて読み(catコマンドを使う)、指示に従ってファイルやディレクトリ操作を行うこと。

なお、英語で桃はpeachである。「(ファイル名)を見なさい」「(ファイル名)の指示に従え」という指示は「(ファイル名)の内容を表示させて読め」ということである。「(ディレクトリ名)の下で」は「カレントディレクトリを(ディレクトリ名)に移動して」ということである。「(ファイル名)を実行して」は指定されたファイルをコマンドとして実行しなさいということである。

課題提出要領

指示された手順を最後まで正しく実行すると、何をどのようにすればよいか分かるはずである。

補足