不要なファイルの削除
最初に,不要なファイルを削除しましょう. ターミナルを立ち上げ,cd コマンドで授業用フォルダに移動します. 続いて,ls コマンドで, 授業用ディレクトリ densan2 の下にあるファイルを表示させてみましょう. 下図では7つのファイルが表示されています.
a.out というファイルは, 出力ファイル名を指定せずにソースファイルをコンパイルしたときにできるファイルでしたね. これを消去してみましょう. ファイルを消去するコマンドは rm です.これは remove という意味のコマンドです.
rm a.out
と入力して [Return] キーを押してください(rm の次に半角スペースが必要). 続いて ls コマンドで授業用フォルダの内容を表示させると, a.out が消去されたことがわかります.
rm コマンドは危険なコマンドです. 削除するよう指定したファイルは,ごみ箱に移されることなく, そのまま削除されてしまうからです. 指定されたファイルを消去してよいかどうか確認するオプションを指定できますので, これを行った方がよいでしょう. 以下の説明ではこのオプションを用います.
名前の最後にチルダ(~)がついているファイルはバックアップのファイルです. Emacs でソースファイルを作成し,ファイルの更新(上書き保存)を行うと, ひとつ前のバージョンが残されます. これがチルダつきのファイルです. 上図では,list0101.c~ および list0102.c~ の2つです.
バックアップのファイルを消去しましょう.ターミナルで
rm -i *~
と入力して [Return] キーを押してください(-i の前後に半角スペースが必要). ここでアスタリスク(*)はワイルドカードであり, 任意の文字列と一致します. したがって,rm *~ というコマンドは, 「最後が ~ で終わるファイルをすべて削除せよ」という意味になります. ワイルドカードを使うと, このように複数のファイルを指定できます.
rm と *~ の間に置かれた -i は,interactive の意味で, 削除の確認をするためのオプションです. 上図では,list0101.c~ を削除するかどうか尋ねられています. このファイルを削除してよければ, 1文字 y とだけ入力して [Return] キーを押します.
削除対象として指定されたファイルが他にあれば, それらすべてについて,削除してよいかどうか順に尋ねられます. 下図では,list0102.c~ を削除するかどうか尋ねられています. このファイルを削除してよければ, 1文字 y とだけ入力して [Return] キーを押します.
ls コマンドでファイルを表示すると, バックアップファイルが削除されたことがわかります.
Emacs でソースプログラムを書くと,#list0101.c# のように, シャープ(#)で囲まれた名前のファイルが残ることがあります. これは自動保存されたファイルです. プログラムを書き,ファイルを上書き保存すれば消えるのですが, 上書き保存しないまま Emacs を終了してしまうと残ってしまいます.
Emacs での自動保存ファイルは,単純に rm コマンドを実行しても消せません.
rm '#list0101.c#'
のように, ファイル名をシングルクオーテーション(')で囲ってやれば削除できます.
ファイルの移動
不要なファイルの削除が終わったら, ファイルを整理するためのフォルダ(ディレクトリ)を作って, そこにファイルを移動しましょう. いま,第1章の学習が終わったところだとします. chap01 というディレクトリを作り, 第1章の学習で作成したファイルをこのディレクトリに移動することにします.
授業用ディレクトリ densan2 の下に, chap01 というディレクトリを作りましょう. 現在のワーキングディレクトリは授業用ディレクトリであるとします. ターミナルで
mkdir chap01
と入力して [Return] キーを押します(mkdir の後に半角スペースが必要). この mkdir コマンドは 授業用ディレクトリの作成 で使ったコマンドですね.make directory の省略です.
ディレクトリが作成されたことを ls コマンドで確認しましょう. ディレクトリを区別するために,-F オプションをつけます.
ls -F
と入力して [Return] キーを押してください(ls の後に半角スペースが必要). オプションの -F は大文字です.
ディレクトリには,名前の最後にスラッシュ(/)が付けられています. chap01/ という表示がありますから, chap01 という名前のディレクトリが作成されていることがわかります. 名前の最後にアスタリスク(*)が付いているのは実行ファイルです.
第1章の学習で作成したファイルを chap01 ディレクトリの下に移動します. これには mv コマンド(move という意味)を用います. 移動するファイルとファイルの移動先を, mv [移動するファイル] [移動先] という形式で指定します. ターミナルで
mv list01* chap01/
と入力して [Return] キーを押してください(list01* の前後に半角スペースが必要). コマンド move と remove は似ているので, 間違えて rm コマンドを実行しないように注意してください. list01 の後についているアスタリスク(*)はワイルドカードです. list01* は「list01 で始まるすべてのファイル」という意味になります. ここの例では,こうしたファイルは4つあります. 移動先として指定されているディレクトリは chap01 ですね. 最後のスラッシュは省略してもかまいません. ここでの例では, 授業用ディレクトリに作成されていたファイルはすべて list01 で始まる名前なので, これらすべてのファイルが chap01 ディレクトリの下に移動されることになります.
ファイルが移動されたことを ls コマンドで確認しましょう. 授業用ディレクトリで ls コマンドを実行すると, chap01 というフォルダだけが表示されます.
cd コマンドで chap01 ディレクトリに移動したあと, ls コマンドでこのディレクトリの下にあるファイルを表示してみてください. 名前が list01 で始まる4つのファイルが移動されたことがわかります.
移動した実行ファイルの実行
授業用ディレクトリの下に chap01 というディレクトリを作成し, 第1章で作成したファイルをこのディレクトリの下に移動したとします. この chap01 ディレクトリに移動した実行ファイルは, 実行ファイル名だけをターミナルから入力しても実行できません. 授業用ディレクトリにはパスを通しましたが, その下のディレクトリにはパスを通していないからです. たとえば,chap01 ディレクトリの下にある list0102 を実行しようとして list0102 と入力すると, 下図のように command not found というエラーメッセージが返されます.
現在のワーキングディレクトリが chap01 であれば,
./list0102
と入力すれば list0102 を実行できます. ここでドット(.)は現在のワーキングディレクトリを意味します.
あるいは,実行ファイルがある場所を完全に明示して,
~/densan2/chap01/list0102
としても list0102 を実行できます. チルダ(~)はホームディレクトリを意味します.