ファイルとディレクトリ(2)、印刷、Emacs(4)

					2010年05月07日
情報科学類 コンピュータリテラシ

                                       筑波大学 システム情報工学研究科 
                                       コンピュータサイエンス専攻, 電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2010/2010-05-07
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

■ファイルとディレクトリの木構造とパス名

◆木構造

木構造(tree structure)というのは、コンピュータ・サイエン ス(情報科学類で学ぶ学問)でよく使われる用語。 階層構造(hierarchical structure)ともいう。

木構造の例を、大学の組織を使って説明する(図1)。

木構造という名前は、本物の木が、一度枝分かれした後は決して交わらないこ とに似ていることによる。ある節から別の節までの道が2通り以上あるは、グ ラフ構造と呼ばれる。

筑波大学、社会・国際学群・・・情報学群、情報科学類・・・

図1 大学組織に見られる木構造

筑波大学、社会・国際学群・・・情報学群、情報科学類・・・(領域的な見方)

図2 大学組織に見られる木構造(領域的な見方)

◆字下げによる木の表現

木構造を字下げで表すことがある。

筑波大学

◆区切り文字入り表記

「情報科学類」という節を、次のように表記する。

筑波大学情報学群情報科学類

コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。

筑波大学.情報学群.情報科学類
筑波大学/情報学群/情報科学類
情報科学類.情報学群.筑波大学

区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。

◆木の例

コンピュータでは、次のような場所で木構造が使われている。

コンピュータ以外では、次のような場所で木構造が使われている。

◆くわしくは

総合科目「ネットワーク社会を支える情報技術入門 II」/木構造(2009年9月24日)

http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2009-09-24/

◆ディレクトリの木構造

Unix(MacOSX, Linux含む)やMS Windows では、 ファイルの名前を、基本的には 木構造(tree structure,きこうぞう) という考え方で整理する。 木構造は、 階層構造(hieratical structure) とも呼ばれる。

根が上にある本物の木

図? 本物の木

根、home、etc、user、kernle、yas、中間節、端説、リンクからなる構造

図? ファイルとディレクトリの木

◆ルート・ディレクトリ(the root directory)

本物の木に根にあたるディレクトリ。

ルート・ディレクトリの名前は、「/」 (スラッシュ 1 文字)。

◆パス名

Unix では、ファイルやディレクトリの名前を付ける時に、木構造で考えてそ のファイルやディレクトリにたどり着くための道順を使う。 このような名前をパス名(path name) という。 パス(path)とは「道」の意味。pass ではない。

ルートディレクトリから出発する方法で表記するパス名を、 絶対パス名(absolute path name)

絶対パス名は、ルートディレクトリを表す「/」の後に、 たどった枝の名前を並べ、間に区切りとして「/」をはさむ。

例:「/usr/bin/wc

  1. ルート・ディレクトリから出発する
  2. usr」という枝に進む
  3. bin」という枝に進む
  4. wc」という枝に進む

◆カレントワーキングディレクトリ

ルート・ディレクトリを起点にする方法(絶対パス名)だけでは、作業しにくい。 「現在作業中のディレクトリ」 「カレント・ワーキング・ディレクトリ(the current working directory)」 を起点として、ファイル名を扱う。

カレント・ワーキング・ディレクトリを表示するには、pwd (print working directory) コマンドを使う。

$ pwd [←]
/USA/California
$ []
表示されている「/USA/California」が絶対パス名で表示されたカレント・ワー キング・ディレクトリの名前。

カレント・ワーキング・ディレクトリを変更するには cd (change directory) コマ ンドを使う。

$ cd dirname [←]
「ディレクトリ dirname に行く」とも言う。

$ pwd [←]
/USA/California
$ cd /USA/Florida [←]
$ pwd [←]
/USA/Florida
$ cd /USA/California/San-Francisco [←]
$ pwd [←]
/USA/California/San-Francisco
$ []

カレントワーキングディレクトリは、名前「.」で参照できる。

lsコマンドは引数にディレクトリを指定すると、そのディレクトリの中にある ファイルの一覧を表示するが、引数を与えないと、「.」が与えられたものとし て働く。

$ ls [←]
Los-Angeles  San-Francisco
$ pwd [←]
/USA/California
$ ls /USA/California [←]
Los-Angeles  San-Francisco
$ ls . [←]
Los-Angeles  San-Francisco
$ []

カレントワーキングディレクトリを起点としたパス名を 相対パス名(relative path name)という。 「/USA/California」の時、 「San-Francisco」は「/USA/California/San-Francisco」、 「San-Francisco/China-Town」は「/USA/California/San-Francisco/China-Town」を意味する。

◆ディレクトリの親子関係

親ディレクトリ(parent directory)
あるディレクトリの ルート・ディレクトリからそのディレクトリへの道順で1つだけ 根に近いディレクトリ。 1個上のディレクトリともいう。 「..」で参照可能。
子ディレクトリ(child directory), サブディレクトリ(subdirectory)
あるディレクトリの、1つ根から遠いディレクトリ
隣のディレクトリ、兄弟のディレクトリ
共通の親ディレクトリを持つディレクトリ。 「../ディレクトリ名」で参照可能。

◆ホーム・ディレクトリ(home directory)

個人所有のファイルを保存する時に起点となるディレクトリ。

cd コマンドに引数を与えないと、ホーム・ディレクトリにもどる。

多くのシェル(csh,tcsh,bash,zsh) やEmacsなどでは、 ホームディレクトリを「~」で指定できる (指定できないプログラムもある。)

」は、ASCIIの形。 JIS では、「」となることがある。

他人のホーム・ディレクトリは、「~ユーザ名」で指定できるプログラムがある。 (指定できないもプログラムもある。)

~xxx」と「~/xxx」のように 「~」直後に「/」の有無で意味が違う。

/ がなく、アルファベットで始まる(~xxx)
他のユーザのホーム・ディレクトリ。 xxx はユーザ名として解釈される。
/ がある ~/xxx
自分のホーム・ディレクトリ以下のファイル(またはディレクトリ)。 xxx はファイル名、または、ディレクトリ名として解釈される。
/ がなく、数字で始まる(~1、~2、・・・、など)
bash では、ディレクトリスタックの上から num 番目を参照。 The Unix Super Text 上巻 11.10 ディレクトリスタック 参照

◆ls -aコマンドによる「.」から始まるファイルの表示

ls コマンドは、標準では、カレント・ワーキング・ディレクトリを意 味する「.」や親ディレクトリを意味する「..」を含めて、 「.」から始まるファイル名を表示しない。-a オプションを付 けると、「.」から始まるファイル名も表示する。ホーム・ディレクト リには、「.」で始まるファイルがいくつか存在する。
$ ls [←]
Desktop         Library         Music           Public          WinFiles
Documents       Movies          Pictures        Sites           public_html
$ ls -a [←]
.                       .cshrc~                 Movies
..                      .emacs                  Music
.CFUserTextEncoding     .emacs.d                Pictures
.DS_Store               .login                  Public
.Spotlight-V100         .profile                Sites
.Xauthority             .ssh                    WinFiles
.backupfiles2006        Desktop                 public_html
.bashrc                 Documents
.cshrc                  Library
$ []

◆cp file dir

cp コマンドには、コピー先にディレクトリを指定することができる。
$ cp file1 file2 dir [←]
この場合、dir 以下に、(一番葉の部分だけ)同じ名前のファイルが作られる。 次の操作と概ね同じ動作をする。
$ cp file1 dir/file1  [←]
$ cp file2 dir/file2 [←]

ディレクトリを指定する時には、カレント・ワーキング・ディレクトリ 「.」 や ホーム・ディレクトリ「〜」も使える。

$ cp /etc/group . [←]
$ cp /etc/group ~ [←]

◆属性

ファイルの属性は、ls -l で調べられる。 ディレクトリの場合、一番左側に directory を意味する d がつく。 詳しくは、 ファイルの属性 を復習しなさい。

■ディレクトリの操作

作成(後述)、内容の表示、名前の変更、削除(後述)がある。

◆ディレクトリの作成

mkdir (make directoryr)コマンドを使う。
$ mkdir dirname [←]
この結果、dirnameという名前のディレクトリが作らる。

◆ディレクトリの内容の表示

ディレクトリに含まれるファイルの名前や子供のディレクトリの名前は、 ls コマンドで表示できる。
$ ls dirname [←]
この結果、ディレクトリdirnameの中(下)にあるファイルと ディレクトリの名前が表示される。

◆ディレクトリ名の変更

mvコマンドは、ディレクトリの名前を変更するために使える。

$ mkdir dir1 [←]
$ ls  [←]
dir1
$ mv dir1 dir2 [←]
$ ls  [←]
dir2
$ []

◆ディレクトリの削除

ディレクトリを削除するには、 rmdir (remove directory) コマンドを使う。
$ rmdir dirname [←]
この結果、 ディレクトリdirnameが削除される。

空でないディレクトリは、rmdir()コマンドでは 「Directory not empty,directorynotempty」 というエラー・メッセージが表示され削除できない。 この場合は、子供のディレクトリやファイル を削除してからもう一度削除する。

■印刷

◆プリンタ

各実習室にプリンタがある。

acacia_pr1 acacia_pr2 acacia_pr3 burnet_pr1 burnet_pr2 c113color c205color cosmos_pr1 cosmos_pr2

各コンピュータ(iMac, PC)で、標準で地理的に近いモノクロプリンタに出力さ れるように設定されている。

実際に紙に印刷する前に画面に表示(プレビュー)し、拡大縮小の倍率や枚数 を確認するとよい。

両面印刷(duplex)を行うこともできる。1枚に複数ページ(n-up)を印刷するこ とができる。

1ヶ月に200枚まで印刷できる。

◆PostScript

PostScript は、Adobe 社により開発されたプリンタを制御するための スクリプト言語(プログラミング言語)。 coins のプリンタに印刷する時には、PostScrip 言語のプログラムを 作成して、プリンタに送っている。

EPS (Encapsulated PostScript) 形式は、PostScript に描画領域などの 情報を付加したもの。

PostSctip 形式のファイルは、テキストなので、テキスト・エディタで表示で きる。人間が手で書くこともできる。

◆キュー

プリンタのキューを操作するコマンドと環境変数

MacOSX の場合、環境変数の他に ~/Library/Preferences/com.apple.print.PrintingPrefs.plist の設定にも影響される。このファイルの内容は、 「システム環境設定」で変更できる。

■Emacs(4)

◆モード

Emacs は、編集するテキスト・ファイルの種類に応じて細かい動作を変更する。 この時、Emacs では「モード(mode)」を変更すると言う。

Emacs は、モードを編集するファイルの拡張子を見て自動的に変更する。 Emacs がよく使うモードと拡張子は、次のようになっている。
Emacs のモードと拡張子
モード 拡張子
text-mode .txt, .text
c-mode .c, .h
lisp-interaction-mode .el
fundamental-mode なし

◆*scratch*

次のような画面が表示されたら、それを編集してはならない。
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.



-EEE:---F1  *scratch*      All L5     (Lisp Interaction)-------------

日本語訳:
;; このバッファは、保存する必要がない注意事項表示とLisp 評価のためのバッファです。
;; もしファイルを作成したいなら、C-x C-f を使ってファイルを開きなさい。
;; そして、ファイルのバッファへテキストを打ち込みなさい。



-EEE:---F1  *scratch*      All L5     (Lisp Interaction)-------------

このような表示がなされたら、画面の指示に従い、C-x C-f でファイル を開くこと。

■実習

実習時間中には、以下の課題をできるだけ多く行いなさい。全部を行う必要は ない。 コマンドの使い方は、The UNIX Super Text、手引きの他に man コマンドで調べる方法がある。

★練習問題(701) cd、pwd、lsによるディレクトリの観察

次のディレクトリの内容を cd コマンド、pwdコマンド、および、ls コマンド を使って観察しなさい。
$ cd ディレクトリ名 [←]
$ pwd [←]
$ ls [←]
$ ls -l [←]

★練習問題(702) cdコマンドによるホームディレクトリへの移動

次の方法で、ホームディレクトリへ移動してみなさい。

(1) 引数無しで cd コマンドを実行

$ cd / [←]
$ pwd [←]
$ cd [←]
$ pwd [←]
(2) cd コマンドに、「~」を与える。
$ cd / [←]
$ pwd [←]
$ cd ~ [←]
$ pwd [←]
(3) cd コマンドに、「~ログイン名」を与える。
$ cd / [←]
$ pwd [←]
$ cd ~ログイン名 [←]
$ pwd [←]
(4) cd コマンドに、環境変数「HOME」を与える。
$ cd / [←]
$ pwd [←]
$ cd $HOME [←]
$ pwd [←]

★練習問題(703) cdコマンドによるホームディレクトリ以下のディレクトリへの移動

ホーム・ディレクトリの下に、どのようなディレクトリがあるかを ls -l で調 べなさい。
$ ls -l [←]
ディレクトリの場合、左端が「d」になっている。 ( ファイルの属性 参照 ) cd コマンドを使って、カレント・ワーキング・ディレクトリを ホーム・ディレクトリの下のディレクトリに変更しなさ い。以下は、Movies に変更した例である。
$ cd [←]
$ pwd [←]
$ ls [←]
$ cd Movies [←]
$ pwd [←]
$ ls [←]
Movies 以外の2〜3のディレクトリについても、類似の操作を行いな さい。

★練習問題(704) ls -aコマンド

ls コマンド(ls -l)、および、ls -a コマンド(ls -al)で、ホーム・ディレク トリを表示しなさい。その違いを観察しなさい。
$ cd [←]
$ ls [←]
$ ls -a [←]
$ ls -l [←]
$ ls -la [←]

★練習問題(705) ls -lRコマンド

ls に -R (Recursively) オプションを付けると、ディレクトリの何か子供のディ レクトリが含まれていた場合、それの子供も含めて全て表示する。ls -lR のよ うに、-l と合わせて使うことが多い。 この機能を確認しなさい。

★練習問題(706) treeコマンド

tree コマンドを利用して、ファイルを木構造が分かりやすいように表示しなさい。

tree コマンドに -N オプションをつけると、ファイル名に漢字を含むものも表 示できる。

$ tree -N ディレクトリ名 [←]
さらに、nkf を使えば、ファイル名を EUC で表示できる。
$ tree -N ディレクトリ名 | nkf -e [←]
nkf コマンドの代わりに lv コマンドを使う方法もある。 (lv コマンドの終了は、q)
$ tree -N ディレクトリ名 | lv [←]
tree コマンドの次のオプションの意味を ls と比較しなさい。 詳しくは、man tree を見なさい。

★練習問題(707) Firefox による印刷

次のような方法で Firefox により印刷のためのウィンドウが表示されることを 確認しなさい。(実際には印刷しない。)

★練習問題(708) MacOSX プレビュー

プレビュー機能を利用してみなさい。ます、Firefox 等で印刷の操作を行いな さい。最後に「プリント」のボタンを押すのではなく、「プレビュー」のボタ ンを押しなさい。

PDF,プレビュー、キャンセル、プリント

図? Firefoxのプリントのウィンドウ

「プレビュー」のボタンが表示されない時には、「PDF」を試しなさい。そのボ タンを押すと開かれるメニューの中で、「プレビューで PDF を開く」という項 目を選びなさい。

★練習問題(709) MacOSX PDFファイルの作成

次のような方法でPDFファイルを作成しなさい。

★練習問題(710) MacOSX PDFファイルの表示

PDFファイルを、次のプログラムを使って表示しなさい。 Finder で「アプリケーション」のディレクトリを開き、ダブルクリックで実行 する。「ファイル」メニューから「開く」を選び、ファイルを指す。

★練習問題(711) Firefox による印刷(2)

Firefox で印刷する時、拡大印刷、縮小印刷、紙の方向の変更が変更できるこ とを確認しなさい。

★練習問題(712) Firefox による印刷(3)

Firefox の印刷で、印刷する時、次のことが行える。 これらのことを確認しなさい。 レイアウトを調整した時にも、「印刷」する前に、プレビューを行うことを奨 める。

★練習問題(713) bash ディレクトリスタック

bash の次のコマンドを使ってみなさい。 The Unix Super Text 上巻 11.10 ディレクトリスタック 参照

★練習問題(714) bash ディレクトリスタック(2)

bash のディレクトリスタックの上えら num 番目を参照する 機能(~1、~2、・・・、など)を利用してみなさい。
$ pushd ディレクトリ名 [←]
$ pushd ディレクトリ名 [←]
$ pushd ディレクトリ名 [←]
$ ls ~1 [←]
$ ls ~2 [←]
$ ls ~3 [←]

★練習問題(715) MacOSX PostScriptファイルの作成

練習問題(709) MacOSX PDFファイルの作成 と類似の方法で PostScript ファイルを作成しなさい。 拡張子としては、「.ps」を使いなさい。

★練習問題(716) a2psコマンド

The Unix Super Text 上巻 17.2節 PostScriptの使い方 参照。 a2ps コマンドを使って、ASCIIからなるテキストファイルからPostScript ファ イルを作成しなさい。
$ a2ps --help [←]
$ a2ps -o file.ps file.txt [←]
詳しくは、man a2ps を見なさい。

注意: a2ps コマンドは、日本語を扱うことはできない。日本語は、a2ps-j を 使いなさい。PostScript ファイルを作る時には、必ず -o オプションを使うこ と。-o オプションを付けないと、そのままプリンタに送られてしまう。

★練習問題(717) a2ps-jコマンド

a2ps-j コマンドを使って、日本語漢字を含むテキストファイルから PostScript ファイルを作成しなさい。
$ a2ps-j -help [←]
$ a2ps-j file.txt > file.ps [←]
注意: -o オプションは使えない。

★練習問題(718) convertコマンド

convert コマンドを使って、PNGやJPEG形式の画像ファイルを PostScript 形式に変換しなさい。 The Unix Super Text 上巻 17.2節 PostScriptの使い方 参照

★練習問題(719) pstops、psselect、psmergeコマンド

pstops、psselect、psmergeコマンドを使ってみなさい。 The Unix Super Text 上巻 17.2節 PostScriptの使い方 参照

★練習問題(720) MacOSX PostScriptファイルの表示(プレビュー)

次のプログラムを使って PostScript ファイルを表示しなさい。

★練習問題(721) lpqコマンド、lpstat -dコマンド

lprコマンド、あるいは、lpstat -d コマンドを実行しなさい。そして、標準で どのプリンタのキューに送られるかを調べなさい。 環境変数 PRINTER、および、LPDEST を表示しなさい。

★練習問題(722) PostScriptファイルの印刷

PostScript ファイルを、lpr コマンド、または、lp コマンドでプリンタに送 りなさい。

★練習問題(723) システム環境設定によるプリンタの設定

Dock から「システム環境設定」を実行しなさい。
MacOSX System Preferences のアイコン

「プリンタとファックス」を選びなさい。どのようなプリンタが表示されるか 調べなさい。「デフォルト」というマークがついているプリンタは何か調べな さい。その結果と lpq, lpstat -d の結果と比較しなさい。

★練習問題(724) Emacs C-k

Emacs で C-k は、カーソル以降、行末まで削除する。行末で C-k を打つと、 改行コードを削除する。この機能を確認しなさい。

★練習問題(725) Emacs *scratch* バッファでの計算

次のような方法で、「*scratch*」 バッファを表示しなさい。

方法(1)

方法(2) 下から2行目の白黒反転した行(モードライン)に次のような表示があることを 確認しなさい。
*scratch*      All L行番号     (Lisp Interaction) ----

「*scratch*」 バッファで、次のようなキー操作を行ってみなさい。

;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.

(+ 1 2 3)^J
(- 100 10)^J
(* 100 10)^J
(/ 5 2)^J
(/ 5.0 2)^J
emacs-major-version^J
(getenv "HOME")
注意: 行末の括弧の右の^Jは、Control + J の意味。

★練習問題(726) Emacs 拡張子によるモードの変化

Emacs C-x C-f で、次のような拡張子を持つファイルを作成してみなさい(内容 は空でもよい)。 モードラインの表示がどうなるか確かめなさい。M-x describe-mode で、 モードの説明を表示しなさい。M-x describe-bindings で、どのような キー操作があるか調べなさい。

■課題7 ファイルとディレクトリ(2)、印刷、Emacs(4)

以下の問題について、問題、および、回答をテキスト・ファイルに記述し、 レポート提出ページから提出しなさい。 端末の表示(コマンドの実行結果)は、コピー&ペースト等の機能を使って提出 するファイルに含めなさい。

(1) 「cd コマンド」、および、シェルのファイル名置換機能を使って /usr/bin にある次のようなファイルをすべて表示しなさい。結果は、ls また は echo コマンドで表示し、コマンドラインを含めてその結果をレポートに含 めなさい。ls、または、echo コマンドには、必ず相対パス名を指定しなさい。

(2) 次のようなディレクトリとファイルを作成しなさい。

レポートには、どのようなコマンドをどのような引数で実行したのかを書きな さい。iTerm におけるシェルとの対話の様子、または、history コマンドの 結果のうち、必要部分を抜き出したものを含めなさい。 最後に、ls -lRやtree コマンドで表示すると、次のようになるはずである。
$ ls -lR dir1
total 16
drwxr-xr-x  2 yas  prof  4096  5  6 16:11 dir2
drwxr-xr-x  2 yas  prof  4096  5  6 16:12 dir3

dir1/dir2:

dir1/dir3:
total 1
-rw-r--r--  1 yas  prof  6  5  6 16:12 file4
$ tree dir1
dir1
|-- dir2
`-- dir3
    `-- file4

2 directories, 1 file
$ 

(3) 次のような PDF ファイルを作成しなさい。

たとえば、コンピュータリテラシの講義資料は、2-up (元々2ページを 1 ペー ジ)にし、それを「短辺とじ」で両面印刷されている。

作成したら、TA に示して確認番号をもらいなさい。

(4) The Unix Super Text の次の部分を読みなさい。

そして、項目についてついて調べて、簡単に説明しなさい。

(5) [加点] The Unix Super Text 上巻「11.10節 ディレクトリスタック」を読 み、ディレクトリ・スタックの機能を利用しなさい。そのことを採点者がわか るように、端末の表示(コマンドの実行結果)や history コマンドの結果を示し なさい。ただし、11.10節では、シェルとして tcsh が使われている。coins の 標準のシェルは、bash である。bash と tcsh では、dirs, pushd, popd コマ ンドの使い方は共通であるが、ディレクトリスタックの上から num 番目を参照 する機能が異なる。tcsh で=num の所、bash では ~num になる。

(6) [加点] テキスト・ファイルから PostScript ファイルを作成しなさい。 ls -l で 元のテキスト・ファイルと PostScript ファイルの大きさを示しなさ い。head コマンド、または、テキスト・エディタ等を使って元のテキスト・ファ イルと PostScript ファイルの先頭の 10 行程度をレポートに含めなさい。 PostScript ファイルを、gvコマンド等を用いて画面に表示しなさい。 PostScript ファイルを、シェルのコマンドでプリンタのキューに入れ、印刷し なさい。以上の一連の作業を、採点者がわかるように、端末の表示(コマンドの 実行結果)や history コマンドの結果を示しなさい。


Last updated: 2010/05/07 11:32:54
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>