eil2009060102

情報リテラシー実習
Exercise in Information Literacy
§9 ファイルとディレクトリ
§21 ファイルとディレクトリの高度な操作
§37 圧縮とアーカイブ
p. 94
ファイルとディレクトリ
ファイル … 情報を保存する仕組み
ファイルという「入れ物」にデータを入れて,物理的な記憶媒体(ハードディスク、フ
ロッピーディスク、CD-ROM、光磁気ディスク、メモリカードなど)に保存
記憶媒体が替わっても,同じように取り扱い可能
ディレクトリ … ファイルの名前を保存する役割
•ファイル1つ1つをバラバラに管理するのでは,面倒(非効率)
•活用すると、情報を「木構造」という仕組みを使って効率よく整理することができる
ファイルの基本的な操作
pp. 94~95
ファイルの名前(ファイル名)の付け方
•使用禁止文字
”/” (スラッシュ):ディレクトリの区切りを表す特別な文字
”!” (エクスクラメーション)や ” “ (スペース)
推奨文字
アルファベット (大文字,小文字)
大文字/小文字は区別される (AAAとaaaは別)
数字
“-” (ハイフン),”_” (アンダースコア),”.” (ドット)
ただし,UNIX系OSでは,1文字目が”.”のファイルは設定ファイルを表すので注
意
漢字は極力さける (文字コードの問題)
最後に拡張子を付ける
ファイルの基本的な操作
pp. 94~95
文字コード
•コンピュター上で文字を利用するために各文字に割り当てられるバイト表現,もしくは,
バイト表現と文字の対応関係
現在の文字コードの基礎:ASCII(American Standard Code for Information
Interchange)は7ビットを1つの単位とする
日本語圏では,ひらがな,カタカナ,漢字が存在するため,1バイト(いわゆる半角英
数字)と2バイト(いわゆる全角英数字)が混在
代表的な文字コード
Shift_JIS (Microsoft社策定)
ISO-2022-JP (JIS規格によって規定)
EUC_JP (日本語UNIXシステム諮問委員会の提案によりAT&Tが策定)
各言語圏で特有の文字コードが制定されている(互換性問題)
近年,この互換性問題を解消すべく,Unicodeが作られ,最近のOSでは利用が始
まっている
ファイルの基本的な操作
pp. 94~95
拡張子
•ファイルの名前の末尾につけられた,「ファイルの種類」を識別するための文字列
•ファイル名と拡張子 “. (ドット)” で区切られる
•アルファベットと数字の組み合わせで,多くの場合3文字から成る
•OSの動作のトリガに拡張子を用いていることが多く,適切でない場合,システムやア
プリケーションソフトウェアの動作に影響を及ぼす場合がある
•代表例
bmp, jpg, gif : 静止画像ファイル
exe : Windowsなどの実行ファイル
htm, html : Hyper Text Markup Language
lzh, zip : 圧縮ファイル
txt : プレーンテキスト
mp3, mpg : 圧縮された音声/動画ファイル
p.95
ファイルの基本的な操作
ファイルの名前を調べる (listコマンド)
$ ls
存在するファイルの一覧を表示
内容によるファイルの分類
•テキスト
•データの内容を人間が読んで理解できる(human-readable)表示形式
•テキストエディタ(emacs, vi等)や,I/Oリダイレクションで作成可能
•バイナリ(binary=2進数)
•コンピュータが処理・記憶するために2進化された情報 (画像ファイルや音声ファイル,
圧縮ファイルなど)
•専用のソフトウェアで作成/展開
p.96
ファイルの基本的な操作
ファイルのコピー (copyコマンド)
$ cp [オプション] 元ファイル名 コピー先のファイル名
コピー先に同じ名前のファイルがすでに存在していた場合,内容が上書きされてし
まう(注意) → オプションに ”-i”をつけることで防げる
ファイルを消す (removeコマンド)
$ rm [オプション] ファイル名
•WindowsOSやGnomeなどのGUIを使った削除とは違い,rmコマンドで消したファイ
ルは二度と戻らない(注意)
linuxのコマンドは,オプションを加える事で動作を調整する事ができる
p.97
ファイルの基本的な操作
ファイルを移動 (moveコマンド)
$ mv [オプション] 移動させたいファイル名 移動先ディレクトリ
移動先のディレクトリに,同じ名前のファイルがすでに存在していた場合,内容が上
書きされてしまう(注意) → “-i”オプションで回避可
ファイルの名前を変更 (moveコマンド)
$ mv [オプション] 変更前ファイル名 変更後ファイル名
上の二つを同時に行う事も可能
$ mv file1 dir2/file2
(“file1”をディレクトリ”dir2”に”file2”という名前で移動)
p.97
ファイルの基本的な操作
ファイルの操作にともなうエラーメッセージ例と対処法
No such file or directory (ファイル名・ディレクトリ名に関するエラー)
→ ファイル名に誤りがないか確認する
“タブキー”を使ってファイル名の入力補間をマスターすると良い
Permission denied (ファイル・ディレクトリの権限に関するエラー)
→ 属性のモード(後述)を確認する
No space left on device
Disc quota exceeded (ディスクの容量に関するエラー)
→ 不要なファイルを消す
大学の環境(学科,全学)では,1人当たりが使用できるディスク容量が設定されている
ので,不必要なファイルを置かない
p.97-98
木構造とパス名
木構造(階層構造)
グラフ理論の「木」の構造をしたデータ構造(図9-1)
節(ディレクトリ,ファイル)と節を結ぶ枝,あるいはリンクで構成
各節は,0個以上の節を持つ
ディレクトリの中にサブ(子)ディレクトリやファイルを入れる事ができる
子ディレクトリから見れば,自分を含むディレクトリは親ディレクトリ
•頂点にあるディレクトリをルートディレクトリ(根:root)と呼ぶ
p.97-98
木構造とパス名
ファイル(ノード)
ディレクトリ(ノード)
根(ルートディレクトリ)
エッジ(枝)
dev
mt
etc
usr
tty
spool
bin
ls
mv
unix
rm
awk
mail
p.97-98
木構造とパス名
パス(path)名
木構造において,ファイルやディレクトリを指定する表現
↓
ファイルやディレクトリにたどり着くための道順
2つのパス名
絶対パス名:ルートディレクトリ(根)を起点としたパス
•相対パス名:カレント(ワーキング)ディレクトリを起点としたパス
(カレントディレクトリは,現在作業中のディレクトリ)
•特殊な表現
•枝:”/” (スラッシュ)
•カレントディレクトリ:”.” (ドット)
•親ディレクトリ:”..” (ドットドット)
p.97-98
木構造とパス名〜絶対パス名〜
(1)
(1)ルートディレクトリにあるディレクトリ
“/”だけでルートディレクトリを表現するので
/etc
(2) /usr/bin/awk
→ つまり,絶対パス名は,必ず”/”で始まる
(2)
p.97-98
木構造とパス名
(1)
カレント
ディレクトリ
(1)カレントディレクトリを起点とし,2つ親ディレクトリをさかのぼる
./../../etc もしくは ../../etc
(2)カレントディレクトリのファイル
./awk もしくは awk
(2)
木構造とパス名
例)この計算機室の教員が座っている教員用PCの場所を説明する
教室や机を一つのノード(ディレクトリ)と見なすと,
相対パス
自分が座っている机のXX列前の机
絶対パス
熊本県の熊本市の熊本大学の総合情報基盤センターの3F実習室の一番前の机
(のがディレクトリのつなぎめの「/」と同じ役割を果たす)
•絶対パス
•すべての人が理解でき,その通りにたどっていけば到達できる道順
•階層が深くなると文字列(説明)が長くなる
•相対パス
•自分の現在地を基準とするため,他の人には解りにくい
•現在地(カレントディレクトリ)を移動するとパスも変化する
•(自分には)短くて解りやすい
p.97-98
木構造とパス名
カレントディレクトリを指定 (change directoryコマンド)
$ cd ディレクトリ名
ディレクトリ名を指定せずに実行するとホームディレクトリが指定される
カレントディレクトリを確認 (pwdコマンド)
$ pwd ⏎
ホームディレクトリ
•ユーザがログインした直後のカレントディレクトリ
•ユーザが自由にファイルやディレクトリを作る事ができる
•短縮して” ~”(チルダ)と表現される場合もある
•“~”の後に特定ユーザ名を書くと,その特定ユーザのホームディレクトリを表す(例:
“~suyama”は,ユーザID: suyamaのホームディレクトリ)
p.102-103
ディレクトリの操作
ディレクトリを操作するコマンド
ディレクトリ名を相対パスか絶対パスで指定すると,カレントディレクトリ以外のディレク
トリも操作可能
ディレクトリの作成 (make directoryコマンド)
$ mkdir [オプション] ディレクトリ名
ディレクトリ名をスペース区切りで複数入力する事で,一度で複数のディレクトリを
作成する事ができる
ディレクトリの削除 (remove directoryコマンド)
$ rmdir [オプション] ディレクトリ名
•空のディレクトリを削除する(サブディレクトリやファイルが存在する場合はエラーが表
示される)
•$ rm -R ディレクトリ名
空ではないディレクトリを削除する事ができる(注意)
p.102-103
ディレクトリの操作
ファイル操作のコマンドも,パス名を記述する事で,カレントディレクトリ以外のファイル
を操作することが可能
ディレクトリの内容の表示 (listコマンド)
$ ls ディレクトリ名
対象ディレクトリ含まれるファイルやディレクトリの内容を表示する
ディレクトリ名の変更 (moveコマンド)
$ mv 変更前ディレクトリ名 変更後ディレクトリ名
ディレクトリの移動 (moveコマンド)
$ mv 移動対象ディレクトリ名 異動先ディレクトリ名
p.103-104
属性
ファイルの詳細な情報を表示する (オプション -l “小文字のエル”)
$ ls -l
total 38
drwxr-xr-x 2
-rw-r--r-- 1
-rw------- 1
アクセス権限
yas
yas
yas
lab
lab
lab
512
14
17188
Jan 24 14:17
Jan 24 14:32
Jan 17 14:46
所有者
ファイルサイズ
グループ
リンク数
最終アクセス日
所有者
隠しファイルを表示 (オプション -a)
$ ls -a
ピリオドから始まる名前のファイル(設定ファイル等)を表示する
各オプションは,同時に指定可能
$ ls -al (ピリオドから始まる名前のファイルを含む詳細情報を表示)
News
file1
mbox
ファイル名
p.103-104
属性
drwxr-xr-x 2 yas lab
512 Jan 24 14:17 News
-rw-r--r-- 1 yas lab
14 Jan 24 14:32 file1
-rw------- 1 yas lab
17188 Jan 17 14:46 mbox
グループ所有者
アクセス権限
所有者
1文字目 = ファイルの種類
•- : 通常のファイル
•d : ディレクトリ
•l : シンボリックリンク
2文字目 = アクセス権限(左3文字が「所有者(User)」,中3文字が「グループ所有者
(Group)」,右3文字が「その他の利応者(Others)」の権限を表す)
r : 読み出し権限有(read permission)でファイルの内容を見る権限
w : 書き込み権限有(write permission)でファイルを書き換える権限
x : 実行権限有(execution permission)でプログラム等を実行する権限
- : 権限なし
p.105-106
属性の変更
アクセス権限の設定 (change modeコマンド)
$ chmod [ugoa][+-=][rwx] ファイル名
オプション1 ユーザ情報[ugoa]
u : 所有者(user),g : グループ(group),o : その他の利用者(others),a : すべてのユ
ーザ(all)
オプション2 権限の設定[+-=]
+ : 権限を与える, - : 権限を削除する,= : 権限を指定する
オプション3 アクセス権限[rwx]
r : 読み出し(read),w : 書き込み(write),x : 実行(execution)
例) $ chmod o+w file その他の利用者に書き込み権限を与える
例) $ chmod o-r file その他の利用者の読み出しを権限を削除
例) $ chmod go-w file グループとその他の利用者の書き込み権限を削除
p.316-317
リンク
リンクとは,「同じ内容のファイルを2つ作る」しくみ
コピーすれば,同じ内容のファイルを作る事ができるが,一方のファイルの内容だ
け変更すると2つのファイルの内容が食違う
→ リンクは,一方を変更するともう一方も変更される
2種類のリンク
ハードリンク
同一のファイル(データ)に2つの名前を付ける
シンボリックリンク
ファイルを指し示すポインタ(ショートカット)のようなもの
file1.txt
link1.txt
ハードリンク
link2.txt
シンボリックリンク
file2.txt
p.317-318
リンク
ハードリンク
ファイルの内容は同じで,新しい別のファイル名を持つファイルを作る
リンクに対して内容の変更を行うと,元のファイルの内容も同じように変更される
ファイルの実体は共通で,名前が複数
•別ディレクトリにあるファイルを,取り扱うときに便利
ハードリンクの作成 (linkコマンド)
$ ln [オプション] リンク元 リンク先
file1.txt
link1.txt
ハードリンク
リンク
$ ls -l file1
(ファイル1の詳細情報を表示)
-rw-r--r-- 1 yas lab 14 Jan 24 14:32 file1
$ cat file1
This is file1
$ ln
file1
(ファイル1の内容を表示)
$ cat link1
This is file1
link1
(file1のハードリンク”link1”を作成)
(link1の内容を表示)
$ ls -l file1 link1
-rw-r--r-- 2 yas lab
-rw-r--r-- 2 yas lab
file1.txt
link1.txt
ハードリンク
(file1とlink1の詳細情報を表示)
14 Jan 24 14:32 file1
14 Jan 24 14:32 link1
リンク
$ rm
file1
(ハードリンクの片方を削除)
$ ls -l link1
(残ったハードリンクの詳細情報を表示)
-rw-r--r-- 1 yas lab 14 Jan 24 14:32 link1
$ cat link1
This is file1
(残ったハードリンクの中身を表示)
•ハードリンク(ファイル名)を削除しても,ファイル本体は削除されない
•ハードリンクをすべて削除すると,ファイルはどこからも参照できない
ファイルの削除=データ参照の消失
file1.txt
link1.txt
ハードリンク
rm
file1.txt
link1.txt
ハードリンク
rm
ファイル本体を
削除
p.317-318
リンク
link2.txt
シンボリックリンク
シンボリックリンク
ファイルやディレクトリに「別の名前」を付ける
シンボリックリンクの作成 (linkコマンドのオプション ”-s”)
$ ln -s リンク元 リンク先
file2.txt
$ ls -l file2
(ファイル1の詳細情報を表示)
-rw-r--r-- 1 yas lab 14 Jan 24 14:32 file2
$ cat file1
This is file2
$ ln
-s
file2
$ cat link2
This is file2
(ファイル2の内容を表示)
link2
(file2のシンボリックリンク”link2”を作成)
(link2の内容を表示)
$ ls -l file2 link2
-rw-r--r-- 1 yas lab
lrwxrwxrwx 1 yas lab
(file2とlink2の詳細情報を表示)
14 Jan 24 14:32 file2
14 Jan 24 14:32 link2 -> file2
p.317-318
リンク
シンボリックリンクの削除
link2.txt
シンボリックリンク
$ rm link2
file2.txt
$ cat file2
This is file2
リンク先のファイルは削除されない
リンク先のファイルの削除
$ rm file2
$ cat link2
cat: link2: No such file or directory
link2.txt
シンボリックリンク
?
file2.txt
リンク先が不明となり,意味のないファイル(リンク)になってしまう
P.745
圧縮
•
UNIXを使用するにつれ,プログラムやレポート文章等たくさんのファイルが蓄積
され,格納容量が有限のハードディスクを圧迫していくので,必要に応じて削除
(remove)やデータ圧縮(compression)する必要がある
•
圧縮には大まかに2種類の方式が存在
– 可逆圧縮:圧縮前のデータと,圧縮/展開を経たデータが完全に一致
– 非可逆圧縮:もとの内容をある程度捨てる事でデータ量を減らす方式
•
ここでは,ほぼすべてのUNIX標準であったcompressコマンドではなく,gzipコマ
ンドを使うことにする(特許の問題でcompressがフリーではなくなったため)
•
gzipはGNUソフトウェアの1つである圧縮コマンド
•
GNU(グニュー)とは,UNIX互換のソフトウェア環境をすべてフリーソフトウェアで
実装するプロジェクトで,GNU’s Not Unixの略
28
P.748-749
gzip
•
•
圧縮と伸張
$ gzip [オプション] ファイル1 ファイル2...
– 元のファイル名に拡張子「.gz」を付けたファイルに圧縮結果を保存
•
$ gunzip [オプション] ファイル1 ファイル2...
– 指定された.gzファイルを伸張する
• オプション ‘-c’ 圧縮率,あるいは伸張結果などの詳しい情報を標準出
力に書き出す。元のファイルは消去されずに残る。
• オプション ‘-l’ 圧縮ファイル中の元ファイルのファイルサイズと圧縮率を
表示
29
P.750
アーカイブ
• 複数のファイルをまとめて1つのファイルにする事を「アーカイブ(archive)する」と
いい,まとめられたファイルをアーカイブファイル(archive file)と呼ぶ
• アーカイブを使用すると,たくさんのファイルを受/送信する場合に,作業が1度で
済み,また,アーカイブファイルを圧縮する事ができるので,バックアップ等にも使
用される
ファイルや
フォルダ
アーカイブ(書庫)
にまとめる
30
P.750-757
tarの基本
•tar (tape archive):ファイル(及びディレクトリ)をアーカイブする
•$ tar オプション ファイル1 ファイル2...
•オプション ‘f’ アーカイブ名の指定(必須) 拡張子には「.tar」を指定
•オプション ‘c’ アーカイブの作成(create)
•オプション ‘x’ アーカイブからファイルを抽出(extract)/展開(expand)
•注意:「c」と「x」は同時使用不可
•オプション ‘t’ アーカイブに格納されているファイルを一覧表示
•オプション ‘v’ 表示の詳細化(lsに’-i’オプションを与えたときと同じ表示)
–使用例)
•アーカイブの作成 $ tar cvf test.tar file1 file2 ./dir
•アーカイブの展開 $ tar xvf test.tar
31
P.758-759
tarの注意と応用
•
•
•
•
•
•
•
•
注意事項
アーカイブするファイル名(及びディレクトリ名)は,相対パスで指定する (絶対パ
スで指定すると,そのパスの通りに展開しようとして既存のファイルを壊す可能
性があるため)
tarコマンドの元ファイル(及びディレクトリ)はそのままである(削除されない)
gzipでは1つひとつのファイルの圧縮は行うが,ファイルをまとめる事ができない
ので,tarでアーカイブにして圧縮すると効率的
その他
GNU tarコマンド アーカイブの作成とgzip圧縮/解凍を同時に行う
圧縮 $ tar cvfz test.tar.gz file1 file2 ./dir1
解凍 $ tar xvfz test.tar.gz
32