2013年04月23日 情報科学類 コンピュータリテラシ 筑波大学 システム情報系 情報工学域 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2013/2013-04-23
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
ファイル(file)は、コンピュータの中で「情報を保存する」ための仕組み。 ファイルは、ビット列を(バイト単位で)保存する。
記憶媒体
ファイルの大事な役目は、「情報に名前を付ける」という機能。
ディレクトリ(directory)は、ファイルに名前を付ける働きを持っている仕掛 けを提供するもの。フォルダ(folder)と呼ばれることもある。
ディレクトリは、ファイルの名前の一覧表として現れる。
ファイルの性質
ls
, ls -l
, ls -ld
cd
、pwd
cat
, head
, lv
mv
rm
ファイルには、名前(ファイル名(file name))がついている。 ファイルを操作するには、ファイル名を指定する。
/
」 は特別な意味があり、ディレク
トリの区切りを意味する。普通のファイル名は、「/
」 以外の次のよ
うな文字を使うと安全である(問題が起きない)。
A-Z
, a-z
)
0-9
)
-
」(マイナス)、「_
」(下線)、「.
」(ドット、点)
Unixでは、ファイル名としてアルファベットの大文字と小文字の両方使え、か つ、両者は区別される。普通は小文字を使う。Makefile や README のように、 特に注目して欲しいファイルの名前に大文字を使う。
MacOSX では、大文字小文字の違いは保存されるが、
区別されないことがある(区別されることもある)。
abc
という名前は、Abc
でもABC
でも操作できることがある。
MacOSX の Finder は、ディレクトリの名前を加工して表示する。
ファイル名「~
」は、ホームディレクトリを表す特殊な名前。
シェルや Emacs で使える。ホームディレクトリとは、
個人個人のファイルを保存するための起点となるディレクトリ。
ls コマンドを実行すると、存在するファイルの一覧を表示する。
$ ls
Desktop Maildir coins public_html tmp
Documents WinFiles dot secure_html u
Downloads backupfiles2010 etc sie
Library bin lib syspro
$
$ echo This is a pen. > file1
$
>
は、シェルの入出力の切り替え(リダイレクション)の
指定で、詳しくは後日。
cat コマンドを使うと、数行のテキスト・ファイルを作ることができる。
$ cat > file2
GNU is Not Unix!
Try Hurd.
$
^D
(Control D)と表記することもある。この
例では、本格的にテキスト・ファイルを作成するには、Emacs などの テキストエディタを使う。
指定したファイルの内容と全く同じ内容を持つファイルを作ること
ファイルのコピーの目的
ファイルをコピーするには cp (copy) コマンドを使う。
$ cp file1 file2
この結果、ファイル file1 が ファイル file2にコピーされる。
コピー先のファイルfile2が存在しない時は新しくファイルfile2が作られる。
コピー先のファイルが既に存在していた場合、その内容は上書き(overwrite),うわがき)される。 (古い内容を消して新しい内容で埋める)。
ファイルを消すには、rm (remove) コマンドを用いる。
$ rm file1
このファイル file1 が削除される。
rm コマンドで消してしまったファイルは、一般的には2度と戻らない。 消す前に、本当に不要かどうかを確認すること。
ファイル名を変更するには mv (move) コマンドを使う。
$ mv oldname newname
この結果、ファイルoldfileのファイル名をnewnameに変更される。
ここで、newname のファイルが存在した場合、元の newname は消されてしまう。
No such file or directory
Permission denied
No space left on device
Disc quota exceeded
補完(completion)では、人間が目で確認するが、置き換えでは人間が確認する ことはない(見つからなければエラーになる)。
例:/usr/bin
にある at
で始まるファイルをすべて
ls
コマンドに引き渡したい。1つひとつ打つと疲れる。
$ ls /usr/bin/at /usr/bin/atos /usr/bin/atq /usr/bin/atrm /usr/bin/atsutil
/usr/bin/at /usr/bin/atq /usr/bin/atsutil
/usr/bin/atos /usr/bin/atrm
$
次のように、「*
」を使うと楽に打てる。
$ ls /usr/bin/at*
/usr/bin/at /usr/bin/atq /usr/bin/atsutil
/usr/bin/atos /usr/bin/atrm
$
この例では、シェルが「/usr/bin/at*
」を5つのファイル名に置き換え
ている。ls
が行っているのではない。ls
以外のどんなプログラ
ムでも有効である。
$ echo /usr/bin/at*
/usr/bin/at /usr/bin/atos /usr/bin/atq /usr/bin/atrm /usr/bin/atsutil
$ file /usr/bin/at*
/usr/bin/at: setuid Mach-O fat file with 3 architectures
/usr/bin/atos: Mach-O fat file with 2 architectures
/usr/bin/atq: setuid Mach-O fat file with 3 architectures
/usr/bin/atrm: setuid Mach-O fat file with 3 architectures
/usr/bin/atsutil: Mach-O fat file with 3 architectures
$
echo は、引数をそのまま表示するコマンド、
file は、ファイルの種類を表示するコマンドである。
パタン | 意味 |
* | 任意の文字列(空でもよい)(.で始まるものを除く) |
? | 任意の1文字 |
[str] | strのなかの1文字。たとえば [aA] は、a か A とマッチする。「-」があると、ASCIIでその間の文字を意味する。たとえば [0-9](数字)や[a-zA-Z](アルファベット)がよく使われる。 |
{str1,str2,...} | 「,」で区切られたパタン str1, str2, ... を順にファイル名置換した結果を並べたもの |
~username | ユーザusernameのホーム・ディレクトリの絶対パス。 |
~/ | 自分自身のホーム・ディレクトリ |
~ | 自分自身のホーム・ディレクトリ |
よく使われる形式
*
」と「*.*
」は違う。Windowsで「*.*
」と書く
所、Unixでは、「*
」で十分なことが多い。
$ ls -ld /Applications/QuickTime Player.app/
ls: /Applications/QuickTime: No such file or directory
ls: Player.app/: No such file or directory
$
「?」や「*」で置き換え可能な場合が多い。
$ ls -ld /Applications/QuickTime?Player.app/
drwxr-xr-x 3 root wheel 102 11 14 23:31 /Applications/QuickTime Player.app/
$ ls -ld /Applications/QuickTime*Player.app/
drwxr-xr-x 3 root wheel 102 11 14 23:31 /Applications/QuickTime Player.app/
$
バックスラッシュ「\ 」を使うこともできる。
$ ls -ld /Applications/QuickTime\ Player.app/
drwxr-xr-x 3 root wheel 102 11 14 23:31 /Applications/QuickTime Player.app/
$
木構造(tree structure)というのは、コンピュータ・サイエン ス(情報科学類で学ぶ学問)でよく使われる用語。 階層構造(hierarchical structure)ともいう。
木構造の例を、大学の組織を使って説明する(図?)。
筑波大学
コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。
区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。
コンピュータでは、次のような場所で木構造が使われている。
コンピュータ以外では、次のような場所で木構造が使われている。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2010-10-25/
ルート・ディレクトリの名前は、「/
」 (スラッシュ 1 文字)。
ルートディレクトリから出発する方法で表記するパス名を、 絶対パス名(absolute path name)
絶対パス名は、ルートディレクトリを表す「/」の後に、 たどった枝の名前を並べ、間に区切りとして「/」をはさむ。
例:「/usr/bin/wc
」
usr
」という枝に進む
bin
」という枝に進む
wc
」という枝に進む
カレント・ワーキング・ディレクトリを表示するには、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
」を意味する。
..
」で参照可能。
../ディレクトリ名
」で参照可能。
cd コマンドに引数を与えないと、ホーム・ディレクトリにもどる。
多くのシェル(csh,tcsh,bash,zsh
)
やEmacsなどでは、
ホームディレクトリを「~
」で指定できる
(指定できないプログラムもある。)
「〜
」は、ASCIIの形。
JIS では、「 ̄
」となることがある。
他人のホーム・ディレクトリは、「~ユーザ名
」で指定できるプログラムがある。
(指定できないもプログラムもある。)
「~xxx
」と「~/xxx
」のように
「~
」直後に「/
」の有無で意味が違う。
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
$
ls
コマンドは、引数にディレクトリ名が与えられると、ディレクトリ
の内容を表示する。
$ ls ~/Music/
iTunes
$ ls -l ~/Music/
total 8
drwxr-xr-x 3 yas prof 4096 4 26 2010 iTunes
$
ディレクトリそのものを表示したい時(特に「-l
」と組み合わせて日付
等の属性を表示したい時)は、「-d
」オプションを付ける。
$ ls -d ~/Music/
/home/prof/yas/Music/
$ ls -dl ~/Music/
drwx------ 3 yas prof 4096 4 26 2010 /home/prof/yas/Music/
$
$ cp file1 file2 dir
この場合、dir 以下に、(一番葉の部分だけ)同じ名前のファイルが作られる。
次の操作と概ね同じ動作をする。
$ cp file1 dir/file1
$ cp file2 dir/file2
ディレクトリを指定する時には、カレント・ワーキング・ディレクトリ 「.」 や ホーム・ディレクトリ「〜」も使える。
$ cp /etc/group .
$ cp /etc/group ~
ls -l コマンドを実行するとカレントディレクトリのファイルや ディレクトリの属性が表示される。
$ ls -l
total 162
drwx------ 6 yas prof 4096 Apr 9 20:30 Desktop
drwx------ 4 yas prof 4096 Apr 2 14:14 Documents
drwx------ 17 yas prof 4096 Apr 7 13:35 Library
drwx------ 11 yas prof 4096 Apr 14 17:06 Maildir
drwxr-xr-x 3 yas prof 4096 Mar 9 12:10 WinFiles
drwxr-xr-x 3 yas prof 4096 Apr 15 13:35 bin
drwxr-xr-x 35 yas prof 4096 Apr 12 11:44 coins
-rw------- 1 yas prof 6 Apr 19 21:25 dead.letter
...
$
行単位に次のようなファイルやディレクトリの属性が表示さる。
drwx------,drwxr-xr-x,-rw-------
など)
6,4,17,... など
)
yas
)
prof
)
4096,6
など)
Apr 9
など)
Desktop
など)
ls -lu
で表示される。
ls -lc
で表示される「時刻」。
モードの一番左1文字は、ファイルの型(type)を表わす。
-
d
モードからファイルの型を除いた部分はアクセスの可否を決めるための 情報。9文字ある。左から3文字の固まりが3組ある。
各3文字はアクセス毎にその許可・拒否を表す。
r 読込み可 w 書込み可 x 実行可(ディレクトリの場合は探索可)モードで該当する部分が「
-
」の場合は、その種類のアクセスが許可さ
れてないことを意味する。
「読込み可」とは、その内容を参照できること意味する。たとえば、cp コマン ドでコピーできる。読出し可能なディレクトリなら、ls コマンドでそのディレ クトリ中のファイル名の一覧を表示できる。
「書込み可」とは、その内容を変更することができることを意味する。たとえ ば、テキスト・ファイルなら、エディタで修正したものを書き込むことができ る。書込み可能なディレクトリなら、mv コマンドでそのディレクトリのなかに あるファイル名前を変更できる。
「実行可」というのは、ファイルの内容がプログラムの場合は、 そのプログラムを実行することができる。
ディレクトリに対する 「検索可」というのは、その下にあるファイルやディレクトリを たどっていける(ファイルを開く(読み書きのため)、cd (change directory)できる)という意味である。
ディレクトリが「読込み可」でも、「検索可」でないと、 ディレクトリに「読込み可」のファイルがあっても、 ディレクトリに入ってファイルを読むことができない。 逆に、「検索可」でも、ディレクトリが「読込み可」でないと、 ディレクトリにあるファイル名やディレクトリ名を表示させることが できない。
そのディレクトリにあるファイル名を知っていて、そのファイルが「読み込み 可」なら読むことがでる。
アクセスするユーザによって異なったアクセスの許可・拒否がしたいことがあ る。そのために、rwxの指定は、ファイルの所有者、ファイルの属すグループ、 それ以外の人用に3セット用意されている。
例:モードが「rw-r--r--
」のファイル
rw-
」、
つまり「読み書きはできるが、実行はできない」
r--
」、つまり「読めるが書いたり実行したりはできない」
r--
」、つまり「読めるが書いたり実行したりはできない」
$ ls -l /etc/passwd
-rw-r--r-- 1 root wheel 1932 Aug 22 2005 /etc/passwd
$
ls コマンドにディレクトリ名を与えると、ディレクトリそのものではなく、そ
の内容が表示される。
$ ls -l /home/lecture/syspro
total 65
drwx------ 2 syspro lecture 4096 Apr 19 18:53 Desktop
drwx------ 8 syspro lecture 4096 Apr 19 18:53 Library
drwx------ 5 syspro lecture 4096 Mar 1 18:10 Maildir
drwxr-xr-x 3 syspro lecture 4096 Feb 22 19:56 backupfiles2010
-rw------- 1 syspro lecture 6 Apr 19 19:14 dead.letter
drwxr-xr-x 11 syspro lecture 4096 Apr 2 12:40 public_html
drwxr-xr-x 4 syspro lecture 4096 Apr 12 12:00 secure_html
drwxr-xr-x 11 syspro lecture 4096 Apr 12 12:00 syspro-2010
drwxr-xr-x 3 syspro lecture 4096 Apr 19 19:09 tmp
$
ディレクトリ自身を表示したい時には、ls -l -d (ls -ld) とする。
$ ls -ld /home/lecture/syspro
drwxr-xr-x 16 syspro lecture 4096 Apr 19 19:13 /home/lecture/syspro
$
$ man man
$ man ls
$ man mkdir
$ man -k keyword
引数として調べたいコマンドの名前を与える。-k に続いてキーワードを与える
ことで検索もできる。
後述する Emacs に付属の説明書 info を読むためのコマンドもある。
$ info info
$ info bash
GNU Emacs (ぐにゅー いーまっくす)。 Free Software Foundation開発。 Richard Stallman 原作。
3種類ある。
漢字コード | モードラインの表示 | Emacsの設定 |
EUC | E | euc-jp-unix |
JIS | J | iso-2022-jp-unix, junet |
Shift_JIS | S | shift_jis-unix |
UTF-8 | u | utf-8-unix |
emacs記号 | 制御コード(16進数) | 説明 | Controlキー | C言語表記 |
-unix | 0a | nl (new line) | Control+j | \n |
-mac | 0d | cr (carriage return) | Control+m | \r |
-dos | 0d 0a (2文字) | cr nl | Control+m Control+j | \r\n |
dos (Disk Operating System) は、MS-DOS (Microsoft DOS) の意味。 Microsoft Windows の全身。
Emacs では、主に次の3つを変更する。
表示 | 意味 |
** | 変更された(未保存) |
-- | 変更なし(保存済み) |
%% | 書き込み禁止 |
%* | 書き込み禁止バッファが変更された |
Meta キーがない時には、Esc キーを使う。 例えば、M-x と打ちたい時には、 例えば、まず、Escキーを打ち(離し)、その後、x キーを打つ。 (キーを2回に分けて打つ。) ただし、説明の表記は、M- のままなので注意する。
カーソル移動には、矢印キー(←、→、↑、↓)も使えるが、 手がホームポジションから離れてしまうのでよくない。 Control キーを使う方法を使う。 The Unix Super Text 12.3.3項 参照, 手引き 3.2.5項 参照、 手引き 表3.3 参照。
C-b backward-char C-f forward-char C-p previous-line C-n next-line
カーソルの左側を削除する方法とカーソルの右側(カーソルのある場所)を 削除する方法がある。
C-d delete-char DEL delete-backward-char
大量の削除には、カット&ペーストのカットだけを行うとよい。
C-SPC
または C-@
で設定する。
うまくいくと、ミニバッファに Mark set と表示される。
カーソルを動かしても移動しない。
次に新しいマークをセットするまで有効。
C-w
)
M-w
または Esc w)
indent-region
)
$ ls
$ ls -a
$ ls -l
$ ls -la
$ lv -help
次のキーの動作を確認しなさい。
キー | 説明 |
スペース | 次のページ |
f | 1ページ進める(forward) |
b | 1ページもどる(back) |
q | 終了 |
j | 1行進める |
k | 1行もどす |
g | 先頭にもどる |
G | 末尾にもどる |
/str | 文字列 str をファイルの末尾に向かって探す |
?str | 文字列 str をファイルの先頭に向かって探す |
n | 直前の検索をファイルの末尾に向かって繰り返す(next) |
N | 直前の検索をファイルの先頭に向かって繰り返す(next) |
$ info info
$ info bash
$ info emacs
$ cd ディレクトリ名
$ pwd
$ ls
$ ls -l
(1) 引数無しで cd コマンドを実行
$ cd /
$ pwd
$ cd
$ pwd
(2) cd コマンドに、「~
」を与える。
$ cd /
$ pwd
$ cd ~
$ pwd
(3) cd コマンドに、「~ログイン名
」を与える。
$ cd /
$ pwd
$ cd ~ログイン名
$ pwd
$ ls -l
ディレクトリの場合、左端が「d
」になっている。
(
ファイルの属性
参照
)
cd コマンドを使って、カレント・ワーキング・ディレクトリを
ホーム・ディレクトリの下のディレクトリに変更しなさ
い。以下は、Music
に変更した例である。
$ cd
$ pwd
$ ls
$ cd Music
$ pwd
$ ls
Music
以外の2〜3のディレクトリについても、類似の操作を行いな
さい。
$ cd
$ ls
$ ls -a
$ ls -l
$ ls -la
tree コマンドに -N オプションをつけると、ファイル名に漢字を含むものも表 示できる。
$ tree -N ディレクトリ名
さらに、nkf を使えば、ファイル名を EUC で表示できる。
$ tree -N ディレクトリ名 | nkf -e
nkf コマンドの代わりに lv コマンドを使う方法もある。
(lv コマンドの終了は、q)
$ tree -N ディレクトリ名 | lv
tree コマンドの次のオプションの意味を ls と比較しなさい。
$ open /Applications/Calculator.app
これを、ファイル名置換機能(*,?)を利用して、長い文字列をキーボードから打
たないで実行しなさい。
$ echo /App*/Cal*
(1つしか表示されない確認する。複数あると問題がある。)
$ open /App*/Cal*
同様に、/Applications にあるプログラムを実行してみなさい。
ls f1 f2 f3 ファイルの名前の一覧の表示 ls dir ディレクトリの内容の表示 ls カレント・ワーキング・ディレクトリの内容の表示 ls -d d1 d2 d3 ディレクトリの名前の一覧の表示 ls -a dir ディレクトリの内容の表示(.で始まる名前も表示) ls -l f1 f2 f3 ファイルの属性の表示 ls -ld d1 ls -l -d の組み合わせ cat f1 ファイルの内容の表示 cat > f1 ファイルの作成 head f1 ファイルの内容の表示(最初の10行) cp f1 f2 ファイルのコピー cp f1 f2 f3 dir ファイルを指定されたディレクトリへコピー cp f1 f2 f3 . ファイルをカレント・ワーキング・ディレクトリへコピー rm f1 f2 f3 ファイルの削除 mv old new ファイルの名前を変える mv f1 f2 f3 dir ファイルの名前を変える(dir以下への移動) rm -r dir ディレクトリの削除(ディレクトリの内容も削除) f1, f2, f3 はファイル名、dir, d1, d2, ... は、ディレクトリ名
$ emacs file1.txt
「$」は、プロンプトなので打ち込まなくてもよい。
ファイル名としては、講義で述べた安全なものを用いなさい。
$ emacs
file2.txt
というファイルを作成している。
Find file: ~/file2.txt
ファイル名としては、講義で述べた安全なものを用いなさい。
$ emacs file1.txt
キー | 説明 |
---|---|
C-x C-s | バッファを保存。 |
C-x C-c | Emacsを終了。 |
C-x C-f | ファイルを探して編集、または、新規作成。 |
C-p | カーソルを移動(previous) |
C-n | カーソルを移動(next) |
C-f | カーソルを移動(forward) |
C-b | カーソルを移動(backward) |
Delete | 左の文字の削除 |
C-k | カーソルの位置から行末まで削除。行末の場合は、改行の削除。 |
C-g | 何か困った時には、何度か打つ。 |
C-_ または C-x u | 取り消し(undo) |
C-SPC または C-@ | 領域(region)の先頭を決める(マーク) |
C-w | リージョン(領域)をカット |
ESC w | リージョン(領域)をコピー |
C-y | リージョン(領域)をペースト |
M-x set-buffer-file-coding-system ![[←]](../icons/screen-return.gif)
Emacsと文字コードで説明したように、
文字コードとして、euc-jp-unix, iso-2022-jp-unix, shift_jis-unix を
切り替えて、保存(C-x C-s)しなさい。
作成したテキスト・ファイルを、Web ブラウザで表示しなさい。Web ブラウザ では、文字のエンコーディングを変えて、その通りになっているかを調べなさ い。
作成したテキスト・ファイルを、lv コマンドで表示しなさい。そして、 = キーを打ちなさい。すると、ファイル名、先頭からの位置(バイト 数)に続き、ファイルの文字コードが表示される。
M-x help ![[←]](../icons/screen-return.gif)
(M-x は、Esc x でもよい。)
C-u M-x help ![[←]](../icons/screen-return.gif)
t 言語 ![[←]](../icons/screen-return.gif)
言語
としては、次のようなものの中から選択できる。
ASCII Brazilian Portuguese Bulgarian Chinese-BIG5 Chinese-GB Czech Dutch English Esperanto French German Italian Japanese Korean Polish Romanian Russian Slovak Slovenian Spanish Swedish Thai
フォントの問題でうまくいかないかもしれない。
$ typist
そして、タイプ練習を行いなさい。
$ cp ~yas/public_html/coins/literacy-2013/2013-04-23/literacy-a4.txt . ![[←]](../icons/screen-return.gif)
作成したファイルを、 レポート提出ページから提出しなさい。