Exercise in Information Literacy 情報リテラシー実習 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)と呼ぶ
木構造とパス名 dev etc usr unix spool mt tty bin ls mv rm awk mail p.97-98 ファイル(ノード) ディレクトリ(ノード) 根(ルートディレクトリ) エッジ(枝) dev etc usr unix spool mt tty bin ls mv rm awk mail
ファイルやディレクトリにたどり着くための道順 p.97-98 木構造とパス名 パス(path)名 木構造において,ファイルやディレクトリを指定する表現 ↓ ファイルやディレクトリにたどり着くための道順 2つのパス名 絶対パス名:ルートディレクトリ(根)を起点としたパス 相対パス名:カレント(ワーキング)ディレクトリを起点としたパス (カレントディレクトリは,現在作業中のディレクトリ) 特殊な表現 枝:”/” (スラッシュ) カレントディレクトリ:”.” (ドット) 親ディレクトリ:”..” (ドットドット)
木構造とパス名〜絶対パス名〜 (1) (2) p.97-98 (1)ルートディレクトリにあるディレクトリ “/”だけでルートディレクトリを表現するので /etc (2) /usr/bin/awk → つまり,絶対パス名は,必ず”/”で始まる
木構造とパス名 (1) (2) p.97-98 カレント ディレクトリ (1)カレントディレクトリを起点とし,2つ親ディレクトリをさかのぼる ./../../etc もしくは ../../etc (2)カレントディレクトリのファイル ./awk もしくは awk
熊本県の熊本市の熊本大学の総合情報基盤センターの3F実習室の一番前の机 木構造とパス名 例)この計算機室の教員が座っている教員用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 移動対象ディレクトリ名 異動先ディレクトリ名
属性 drwxr-xr-x 2 yas lab 512 Jan 24 14:17 News p.103-104 属性 ファイルの詳細な情報を表示する (オプション -l “小文字のエル”) $ ls -l total 38 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 隠しファイルを表示 (オプション -a) $ ls -a ピリオドから始まる名前のファイル(設定ファイル等)を表示する 各オプションは,同時に指定可能 $ ls -al (ピリオドから始まる名前のファイルを含む詳細情報を表示) アクセス権限 所有者 ファイルサイズ ファイル名 リンク数 グループ 所有者 最終アクセス日
属性 drwxr-xr-x 2 yas lab 512 Jan 24 14:17 News 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 link2.txt file2.txt link1.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 (ファイル1の内容を表示) This is file1 $ ln file1 link1 (file1のハードリンク”link1”を作成) $ cat link1 (link1の内容を表示) $ ls -l file1 link1 (file1とlink1の詳細情報を表示) -rw-r--r-- 2 yas lab 14 Jan 24 14:32 file1 -rw-r--r-- 2 yas lab 14 Jan 24 14:32 link1 file1.txt link1.txt ハードリンク
リンク $ rm file1 (ハードリンクの片方を削除) $ ls -l link1 (残ったハードリンクの詳細情報を表示) -rw-r--r-- 1 yas lab 14 Jan 24 14:32 link1 $ cat link1 (残ったハードリンクの中身を表示) This is file1 ハードリンク(ファイル名)を削除しても,ファイル本体は削除されない ハードリンクをすべて削除すると,ファイルはどこからも参照できない ファイルの削除=データ参照の消失 rm file1.txt file1.txt rm ファイル本体を 削除 link1.txt link1.txt ハードリンク ハードリンク
リンク p.317-318 link2.txt file2.txt シンボリックリンク ファイルやディレクトリに「別の名前」を付ける シンボリックリンクの作成 (linkコマンドのオプション ”-s”) $ ln -s リンク元 リンク先 $ ls -l file2 (ファイル1の詳細情報を表示) -rw-r--r-- 1 yas lab 14 Jan 24 14:32 file2 $ cat file1 (ファイル2の内容を表示) This is file2 $ ln -s file2 link2 (file2のシンボリックリンク”link2”を作成) $ cat link2 (link2の内容を表示) $ ls -l file2 link2 (file2とlink2の詳細情報を表示) lrwxrwxrwx 1 yas lab 14 Jan 24 14:32 link2 -> file2 シンボリックリンク
リンク先が不明となり,意味のないファイル(リンク)になってしまう p.317-318 リンク シンボリックリンクの削除 $ rm link2 $ cat file2 This is file2 リンク先のファイルは削除されない リンク先のファイルの削除 $ rm file2 $ cat link2 cat: link2: No such file or directory リンク先が不明となり,意味のないファイル(リンク)になってしまう file2.txt link2.txt シンボリックリンク ? file2.txt link2.txt シンボリックリンク
P.745 圧縮 UNIXを使用するにつれ,プログラムやレポート文章等たくさんのファイルが蓄積 され,格納容量が有限のハードディスクを圧迫していくので,必要に応じて削除 (remove)やデータ圧縮(compression)する必要がある 圧縮には大まかに2種類の方式が存在 可逆圧縮:圧縮前のデータと,圧縮/展開を経たデータが完全に一致 非可逆圧縮:もとの内容をある程度捨てる事でデータ量を減らす方式 ここでは,ほぼすべてのUNIX標準であったcompressコマンドではなく,gzipコマ ンドを使うことにする(特許の問題でcompressがフリーではなくなったため) gzipはGNUソフトウェアの1つである圧縮コマンド GNU(グニュー)とは,UNIX互換のソフトウェア環境をすべてフリーソフトウェアで 実装するプロジェクトで,GNU’s Not Unixの略 28
gzip P.748-749 圧縮と伸張 $ gzip [オプション] ファイル1 ファイル2... $ gunzip [オプション] ファイル1 ファイル2... 指定された.gzファイルを伸張する オプション ‘-c’ 圧縮率,あるいは伸張結果などの詳しい情報を標準出 力に書き出す。元のファイルは消去されずに残る。 オプション ‘-l’ 圧縮ファイル中の元ファイルのファイルサイズと圧縮率を 表示 29
アーカイブ P.750 ファイルや フォルダ アーカイブ(書庫) にまとめる 複数のファイルをまとめて1つのファイルにする事を「アーカイブ(archive)する」と いい,まとめられたファイルをアーカイブファイル(archive file)と呼ぶ アーカイブを使用すると,たくさんのファイルを受/送信する場合に,作業が1度で 済み,また,アーカイブファイルを圧縮する事ができるので,バックアップ等にも使 用される ファイルや フォルダ アーカイブ(書庫) にまとめる 30
tarの基本 P.750-757 tar (tape archive):ファイル(及びディレクトリ)をアーカイブする オプション ‘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