ディレクトリ操作とファイル管理


コンピュータ,特にUNIXを使う際に常時注意すべきことは以下のようなことである.

このためのさまざまな操作をあらゆる局面,すべてのソフトウエア利用において確実に行えることが必要である.


目次
コマンドプロンプト
作業ディレクトリの取得
ファイル・ディレクトリの一覧
ディレクトリの移動
ディレクトリの作成
ファイルの移動・名称変更
ファイルのコピー
ファイル内容の表示
Emacsでのディレクトリパス

コマンドプロンプト

UNIXでは原則としてキーボードからコンピュータに対する命令(コマンド)を入力しながら作業をする. コマンドを入力する場所をコマンド行(またはコマンドライン)とよぶ.

UNIXのコマンド行はプロンプトによって示されている. たとえば,利用者j13999tjのアクティブなプロンプト(キー入力を受け付ける状態)は次のようになっている(表示は設定によって異なる).

[j13999tj@pc3299 -]:5$ ■

以降,コマンド入力を説明する際,コマンドプロンプトを記号『$』のみで表記することとする.

『pc3299』はマシン番号,記号『:』の右にある数字は過去に何回コマンドを入力したかを示している. 『$』の右にあるテキストカーソルが□のときは,そのコマンドプロンプトがあるウィンドウはアクティブでない. 何かコマンドを入力しようとするときには適すとカーソルが■となっていることを確かめる.

目次

作業ディレクトリの取得

UNIXでは,利用者はどこかのディレクトリ階層の中にいることになっている. 『現在居る』ディレクトリを作業ディレクトリ(Working Directory)という.

コマンドpwd(Print Working Directory)は(現在居る)作業ディレクトリを取得する.

$ pwd
/home/student/j13999tj

この結果は

(現在居る)作業ディレクトリが
  1. ルートディレクトリ/の中の
  2. ディレクトリhome/の中の
  3. ディレクトリstudent/の中の
  4. ディレクトリj13999tj/
に居る
であることを表している.

ログインした直後に居る利用者専用のディレクトリをホームディレクトリと呼ぶ. ホームディレクトリを表す記号として『~/』(チルダー + スラッシュ)を使うことにする. エディタなどでファイルを開いたり,保存するときなどにこのホーム記号はよく現われる.

目次

ファイル・ディレクトリの一覧

コマンドlsはファイル・ディレクトリを一覧するもので,書式は以下の通り.


$ ls ディレクトリ

ディレクトリの指定がない場合には(現在居る)作業ディレクトリ内を一覧する. たとえば,次のように使って結果を得る.

$ ls
Mail/         News/         Work/         public_html/

(この他のディレクトリやファイル群も一覧されるはずである.) 記号『/』がついているのがディレクトリを表しているとしよう.

コマンドlsの一般的書式は次のようである lsの引数として指定したディレクトリ内にあるファイル・ディレクトリの一覧を得ることができる.


$ ls [オプション] ディレクトリ

上で紹介したホームディレクトリを表す記号『~/』を使うと

$ ls ~/
を実行すると,(現在居る)作業ディレクトリがどこであろうとホームディレクトリ内のファイル・ディレクトリを一覧することができる.

たとえば,ホームにあるディレクトリ Mail(ここに送られてきたメールが格納されている)の中のファイル・ディレクトリを一覧するには次のようにする.

$ ls Mail
「ホームにあるディレクトリ Mail」を~/Mailと記述する. さらに,絶対ディレクトリパスで指定すると,

/home/student/j13999tj/Mail

と記述できる.

(現在居る)作業ディレクトリの親ディレクトリ内を一覧するには,「親ディレクトリに行く」という意味の記号『..』(ドット・ドット)を使って次のようにする.

$ ls ..
では,
$ ls ~/..
によって選られる結果を得るかを検討せよ.

目次

ディレクトリの移動

コマンドcdは(現在居る)作業ディレクトリを移動するためのもので,次の書式に従う.


$ cd 移動先のディレクトリ

たとえばホームディレクトリ /~ に居るときにディレクトリMail内に移動するには

$ cd Mail
$ pwd
$ ls
この例のように,ディレクトリを移動したときには,
  1. 正しく目的のディレクトリに移動できたことを確認するためにコマンドpwdで確かめる
  2. 移動先のディレクトリ内にあるファイル・ディレクトリを一覧する
を必ず敢行すること.

こうして移動したとき,元の親ディレクトリに移動するには次のようにする.

$ cd ..

どんなディレクトリに居たとしても,引数なしで単に

$ cd
とするだけで,ホームディレクトリに戻ることができる.

目次

ディレクトリの作成

コマンドmkdir(MaKe Directory)は指定した名前でディレクトリを作成する. 書式は,作成するディレクトリ名を引数とする.


$ mkdir ディレクトリ名

たとえば,ディレクトリ ~/doc を作成してみよう.

$ mkdir doc
$ ls
Mail/         News/         Work/         doc/          public_html/
ディレクトリを作成した際には,コマンドlsをつかって作成したディレクトリが確かにあるか(名前も正しいか)を確かめることが重要である. 作成したばかりのディレクトリ ~/doc には何もファイルは格納されていないので, 当然
$ ls ~/doc
は何も返さない.

目次

ファイルの移動・名称変更

コマンドmv(move)は,指定したファイル・ディレクトリを別に指定するファイル・ディレクトリとして移動する. 一般書式は次のようである.

$ mv 移動元 移動先

移動元・移動先として正しいディレクトリパスを指定する必要がある.

今,次のようにして,ホームにあるファイル・ディレクトリを確認しておこう.

$ cd
$ ls
手元にファイル mytextfile.txt, secondtext.txt, thirdtext.txt,mytextfile.txt~ のテキストファイルがあるとしよう.
ファイルの最後にチルダ『~』の付いたものがあることはコマンドlsを実行するとすぐに気が付く. これはエディタEmacsで作業しているときに,ファイル内容を変更して新たに保存するときに,元のファイル内容を記号「~」をつけて自動的にバックアップされたファイルである.

何らかの事故でファイルが失われたときには,バックアップファイルを探してみよう.

ファイルmytextfile.txtを保存したときに作成されたバックアップファイルmytextfile.txt~を名前を変更してmytextfile.txt.oldとしたい. このためにファイル移動コマンドmvを次のように使う:

$ mv mytextfile.txt~ mytextfile.txt.old
mytextfile.txt~ を同じディレクトリ内に名前 mytextfile.txt.old として移動した,つまりファイル名を変更したということになる.

さて,ホーム ~/ にあるテキストファイル mytextfile.txt をディレクトリ~/doc 内に移動してみよう.

$ mv thirdtext.txt doc/thirdtext.txt
$ ls doc
thirdtext.txt
移動したあとにはちゃんと移動したかを必ずlsで確かめること(さらに,移動元からはファイルがなくなっていることも).

さらに,次のようにしてみよう. 先のコマンドの使い方の違いにも注意する.

$ mv secondtext.txt doc
$ ls doc
secondtext.txt    thirdtext.txt
移動先のディレクトリ名だけでファイル名を省略した場合,移動元と同じファイル名としてファイルが移動されたことがわかる.

$ mv mytextfile.txt doc/firsttext.txt
$ ls doc
firsttext.txt    secondtext.txt    thirdtext.txt
このように移動先のファイル名を指定すると,移動元のファイルはファイル名が変更されて移動される.

すこし複雑な場合をやってみよう. まず,ディレクトリ ~/docへ作業ディレクトリを移動する.

$ cd doc
$ ls
firsttext.txt    secondtext.txt    thirdtext.txt
移動先のファイル・ディレクトリの一覧を確認することを忘れないように. ファイル firsttext.txt をディレクトリ ~/public_html(記号『_』はアンダーバーであってマイナス記号でない)に移動してみよう. 2つの方法が考えられる.

$ mv firsttext.txt ~/public_html
$ ls ~/public_html
firsttext.txt
このやり方は,移動先のディレクトリをホームディレクトリを表す記号『~/』をつけて絶対的ディレクトリパスで指定したやり方である.

$ mv firsttext.txt ../public_html
$ ls ../public_html
firsttext.txt
このやり方は,移動先のディレクトリを,親ディレクトリ(ホーム)に戻りディレクトリpublic_htmlに達するとした相対的ディレクトリパスで指定したやり方である.

絶対的ディレクトリおよび相対的ディレクトリパスによる指定方法を完全に理解して自由に使えるようにしておくこと.

移動したファイルを今居るディレクトリに戻しておこう:

$ mv ~/public_html/firsttext.tex .
移動先ディレクトリに記号『.』(ドット)を使っている. この記号は「現在のディレクトリ」を表している.

目次

ファイルのコピー

コマンドcp(Copy)はファイル内容を複写するコマンドで,その書式は次のようである.


$ cp コピー元 コピー先

ファイル・ディレクトリの移動コマンドmvと同じようにコピー元,コピー先ともディレクトリパスを指定する.

たとえば,ホームにいるとき,そこにある mytextfile.txt.old を ~/doc内にファイル名 oldtextfile.txt という名前でコピーするには

$ cp mytextfile.txt.old doc/oldtextfile.txt
$ ls doc
確かにコピーされたかを ls で確かめることを忘れないこと.

コピー元のファイルを(現在居る)作業ディレクトリとは違うディレクト内にコピーする場合,コピー先のディレクトリだけを指定してファイル名を省略した場合には,同じファイル名でコピーされる.

目次

ファイル内容の表示

テキストファイルの内容を表示するだけのときには,エディタを起動してはいけない. エディタはファイルを作成・編集するためのものである. ファイル内容を確認するときにエディタを使って内容に修正を加えてしまうと,内容だけでなくファイル作成日も変更されてしまい,ファイル管理に大きな影響を及ぼしてしまいかねないからである.

ファイル内容の確認には次の3つのコマンドがある

$ cat ファイル名の並び
$ more ファイル名
$ less ファイル名
コマンドcatには別の用途があるがここでは説明しない.

catコマンドは,ファイル名の並びで指定されたファイルの内容を(複数のファイルを指定したときには,それらを一つながりにして)モニタに表示するが,ファイル内容が画面に収まりきれない場合でも,スクロールしながら表示内容は流れ去ってしまう.

ファイル内容が多い場合には,ウィンドウサイズのページごとに止めながら表示してくれるmoreまたはlessが便利である. 両者の違いは

ファイル~/doc/thirdtext.txt をmoreおよびlessで内容を確認してみよ.
$ more thirdtext.txt
$ less thirdtext.txt
次のように catを使うとどのようになるか観察してみよ.
$ cat firsttext.txt secondtext.txt thirdtext.txt

目次

Emacsでのディレクトリパス

以上の説明を理解することによって,エディタEmacsを使う場合,どんなディレクトリでEmacsを起動しようとも ことができる. Emacsは次のように,通常,ホームディレクトリ ~/ で起動すればよい.
$ emacs &
Emacsのキー操作で説明しているように,C-x C-fによって指定したファイルを開く(Openする)ことができる. このとき,エディタ画面下段のミニバッファには開きたいファイル名をディレクトリパスとともに書き入れてやればよい.

------------------------------------------------------
Find file:  ~/doc/firsttext.txt■
------------------------------------------------------
この場合には,ディレクトリ ~/docにあるファイル firsttext.txt を開こうとしている(ファイルがなければ新規に作成することになる).

一方,C-x C-wによって現在のエディタウィンドウ(正確にはバッファ)に表示されている内容を指定したファイル名で保存することができる. このときも,ミニバッファに保存したいファイル名をディレクトリパスとともに書き入れてやればよい.

------------------------------------------------------
Write file:  ~/public_html/myhobby.html■
------------------------------------------------------
この場合は,現在のバッファ内容をディレクトリ ~/public_html内にファイル名 myhobby.htmlとして保存しようとしている.

目次



mizutani
mackin (加筆修正 2003年4月21日)