ハードウェア、ファイルの属性、ファイル名置換、マニュアルの読み方、Emacs補完、bash補完

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

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

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

■連絡事項

■情報処理の3つの形態

コンピュータは、情報を扱うための機械。 情報や情報処理の定義は、けっこう難しい。

新城の定義。情報とは、コピーしても同じものと思えるもの。物は、コピーす ると別のものになる。お金は、情報だがコピーしてはいけない。

新城の定義(その2)。情報とは、情報処理の対象となるもの。情報処理とは、 次の3つ。

計算(computation)
数の加減乗除、文字列の比較・置き換え、選択など。 プログラミング言語でできることは、主にこれ。 メモリ中のものしか計算の対象にならない。 CPUは、メモリ中のデータしか書き換えられない。
通信(communication)
データをあるコンピュータ(プロセス)のメモリから別のコンピュータ(プロ セス)のメモリにコピーすること。
記憶(storage)
「整理」して、永続的な記憶にコピーする。
実際には、いろいろな要素が混じって、厳密には分類不可能。

ディジタル・コンピュータによる情報処理

人間による情報処理

内部でどうやっているかは、よくわからない。

外から見える人間の情報処理

人間の対話では、実は、non-verbal な情報(文字にならない情報)のやり取り が多い。非言語的な情報は、コンピュータで扱うことは苦手。

講義内容も、印刷された資料/Webの資料の情報量よりも非言語的な情報が多い。

■コンピュータの構成要素

The Unix Super Text 2章 参照 ハードウェアは、分解するすると目に見える。 ソフトウェアは、(有用な)ビット列(ビットの並び)。目に見えない。

◆ハードウェア

CPU、メモリ、ディスプレイ、ディスク、キーボード、ネットワーク
図? ハードウェアの構成要素

◆記憶のためのハードウェア

メモリ(メインメモリ)、RAM(Random Access Memory)、主記憶
実行中のプログラムを保持する。加工するデータを一時的に保持する。 IC(Integrated Circuit、シリコンという元素による半導 体で作られた電気回路)で作られているので、速い。 容量は、ハードディスクよりは小さい。値段が高い。 (揮発的(電源を切ると消えてしまう)。)
ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))、 ストレージ、二次記憶
プログラムやデータをデータを保持する。 容量は、メモリより大きい。値段が安い。 (永続的である(電源を切っても残っている)。)

保存する==書く、取り出す==読む

ハード・ディスク(HDD) の代わりに、SSD (Solid State Drive) を備えている コンピュータも多い。SSD は、IC でできているが、電源を切っても内容が消え ない。フラッシュメモリという技術がよく使われる。

ビット(bit)

ディジタル・コンピュータであつかえる情報の最小単位。

1ビットの情報で表現できること

1ビットでは、あまり大したことはできないので、複数ビットまとめて(ビッ トの並び、ビット列)にしてあつかう。

バイト(byte)

コンピュータでは、8ビットをまとめて扱うことが多い。 8ビット==1バイトという。

1バイトあるとできること

メモリには、数字で番地(アドレス)が付いている。 バイト単位で番地がついているコンピュータが主流。 番地を指定して、1バイトのデータを保存したり、番地を指定して1バイトの データを取り出せたりする。

◆ワード

あるコンピュータで最も効率よく計算できるビットの数。コンピュータによっ て異なる。パーソナル・コンピュータでは、32ビット(4バイト)や 64 ビット (8バイト)のものが多い。

◆ブロック

ハードディスクなどの記憶媒体とは、1ビット単位や1バイト単位では情報を 読み書きできない。もっと大きな単位でしか読み書きできない。 入出力する単位をブロックと呼ぶ。

1ブロックは、512バイト〜8192バイトが多い。 記憶媒体によって違う。

◆計算のための部品

CPU (Central Processing Unit、中央処理装置、中央演算装置)は、コンピュー タの計算を行う部品である。プロセッサ(processor)、 MPU (Micro Processing Unit) と言われることも ある。

CPU は、内部に 数が少ないが、計算の中間結果を置くための高速な 小容量の記憶のための部品(レジスタ)と 計算のための部品(ALU、Arithmetic Logic Unit)を持つ。

CPU は、次の動作を、ひたすら繰り返す

CPU は、メモリ(主記憶)に入っいているプログラムに従って、やはりメモリ (主記憶)に入っいているデータを操作する。CPU が実行できるプログラムは、 機械語と呼ばれる。

CPU の種類によって、プログラム(機械語)が違う。 プログラム(ソフトウェア)を買う時には、CPU の種類に気をつける。

CPU は、コンピュータの速度を決める重要な要素となる。 (CPUだけ速くても他の部品が遅いと、全体として遅くなることがある。)

CPUが速いほど、計算は速い。CPUの速さは、クロックの周波数(単位は、Hz)を 目安にできる。たとえば、2GHz の CPU は、1GHz の CPU の2倍の速度が 出ると期待できるが、実際には周波数以外の技術で高速化がなされることも 多い。CPU の種類が違うと周波数の比較の意味はない。

◆CPUが行う計算の種類

コンピュータでは、 「×」を「*」、「÷」を「/」で表記することが多い。

◆通信のためのハードウェア

日を改めて。

■情報量

◆単位

情報量の単位。

ビット(bit,b(小文字))
コンピュータで扱う情報の最小単位。
バイト(byte,B(大文字))
欧米(ASCII, Latin-1)なら1文字を扱える情報量。 1バイトは、8ビットに等しい。

情報量の単位、ビットやバイトには、次のような係数とともに使われる。

K (キロ(kilo-)、ケイ)
1 K == 1000 または 1024
M (メガ(Mega-))
1 M == 1000 K または 1024 K または 1,000,000 (100万)
G (ギガ(Giga-))
1 G == 1000 M または 1024 M または 1,000,000,000 (10億)
T (テラ(Tera-))
1 T == 1000 G または 1024 G または 1,000,000,000,000 (1兆)
P (ペタ(Peta-))
1 P == 1000 T または 1024 T または 1,000,000,000,000,000 (1000兆)
E (エクサ(Exa-))
1 E == 1000 P または 1024 P または 1,000,000,000,000,000,000 (100京)
1024 == 210

◆情報量の感覚

慣れないうちは空間や距離の感覚に置き換えるとよい。
1 ビット
白と黒の区別
1 バイト (8ビット)
ヨーロッパ系文字 1 文字。256色。
2 バイト (16ビット)
日本語の漢字 1 文字。60000色。
3 バイト (24ビット)
1677万色(2の24乗)。コンピュータのモニタの画素の色数。
4 バイト (32 ビット)
現在広く使われているコンピュータが 一度に計算できる情報量。整数なら40臆程度まで。
256 ビット (32バイト)
16ドット×16ドットの白黒の画像(ビットマップ)で 漢字 1 文字を表現した時の情報量。
数 k バイト
典型的な電子メール1通の大きさ。数千文字。
8k バイト (8000 バイト、64 k ビット, 64,000 ビット)
1秒間に電話の品質で音声を記録した時の情報量。
1 M バイト (1,000,000 バイト, 8,000,000 ビット)
フロッピディスク1枚に保存できる情報量。
256M バイト〜32GB バイト
典型的なパソコンで、一度にメインメモリに入る量(構成によって違う)
640M バイト (640,000,000 バイト)
CD 1 枚に保存できる情報量。
4.7G バイト (5,000,000,000 バイト)
DVD 1 枚(片面1層)に保存できる情報量。
1G-1T バイト
USBフラッシュメモリ, SD(SDHC)カード 1 個に保存できる情報量。
25/50/100/128 G バイト
Blu-ray Disc 1 枚に保存できる情報量。
80 G バイト〜8T バイト
ハードディスクの容量(構成によってかなり違う)

■ファイルの属性

Unixのファイルとディレクトリは、内容(ビット列を保存する)の他に、 所有者、更新された日付などの 属性attributes ) を持つ。

ls -l コマンドを実行するとカレントディレクトリのファイルや ディレクトリの属性が表示される。

$ ls -l [←]
total 99
drwx------   4 yas  prof   3072  4 10 17:37 Desktop
drwx------   3 yas  prof   1024  3 11 13:52 Documents
drwx------@ 34 yas  wheel  2048  4 18 10:05 Library
drwx------  20 yas  prof   2048  4 18 10:57 Maildir
drwx------   2 yas  prof   1024  4 21 16:03 Music
-rw-r--r--   1 yas  prof   3178  4 15 15:56 file100.txt
-rw-r--r--   1 yas  prof     25  4 15 15:58 file30
-rw-r--r--   1 yas  prof   2550  4 15 15:59 literacy-a2.txt
-rw-r--r--   1 yas  prof   2550  4 15 15:57 literacy-a2.txt~
...
$ []
行単位に次のようなファイルやディレクトリの属性が表示さる。

◆所有者(owner)

ファイルが誰の所有物かを示す。 コンピュータのなかでは人はユーザ名で表されるので、 所有者もユーザ名(上の例ではyas)で表される。

◆グループ名

Unixでは複数のユーザが属する グループ(group)を設定できる。 ファイルは必ずどれか1つのグループに属する。

◆大きさ

ファイルの大きさ(size)は、ファイルの内容をバイト数で数えた値(bit ではな く byte)。

◆時刻

Unixのファイルには、次の3種類の時刻が記録されている
最終アクセス時刻 (the last access time)
ファイルの「内容」が最後にアクセス(読み込み)された時刻。 ls -lu で表示される。
最終更新時刻 (the modification time)
ファイルの「内容」が最後に変更(書き込み)された時刻。 ls -l で表示される「時刻」で、 単に「ファイルの時刻」といった場合にはこの時刻を意味する。
最終変更時刻 (the status change time)
ファイルの「属性」が最後に変更された時刻。 ls -lcで表示される「時刻」。
他の時刻も属性の1つなので、「最終更新時刻」を変更すると、 「最終変更時刻」も変更した時刻も変わる。

◆モード(mode)

ファイルの型とファイルへのアクセス(読み書き)の可否を決めるための属性

ファイルの型

モードの一番左1文字は、ファイルの型(type)を表わす。
-
ファイル
d
ディレクトリ

許可されたアクセス方法

モードからファイルの型を除いた部分はアクセスの可否を決めるための 情報。9文字ある。左から3文字の固まりが3組ある。

各3文字はアクセス毎にその許可・拒否を表す。

r	読込み可
w	書込み可
x	実行可(ディレクトリの場合は探索可)
モードで該当する部分が「-」の場合は、その種類のアクセスが許可さ れてないことを意味する。

「読込み可」とは、その内容を参照できること意味する。たとえば、cp コマン ドでコピーできる。読出し可能なディレクトリなら、ls コマンドでそのディレ クトリ中のファイル名の一覧を表示できる。

「書込み可」とは、その内容を変更することができることを意味する。たとえ ば、テキスト・ファイルなら、エディタで修正したものを書き込むことができ る。書込み可能なディレクトリなら、mv コマンドでそのディレクトリのなかに あるファイル名前を変更できる。

「実行可」というのは、ファイルの内容がプログラムの場合は、 そのプログラムを実行することができる。

ディレクトリに対する 「検索可」というのは、その下にあるファイルやディレクトリを たどっていける(ファイルを開く(読み書きのため)、cd (change directory)できる)という意味である。

ディレクトリが「読込み可」でも、「検索可」でないと、 ディレクトリに「読込み可」のファイルがあっても、 ディレクトリに入ってファイルを読むことができない。 逆に、「検索可」でも、ディレクトリが「読込み可」でないと、 ディレクトリにあるファイル名やディレクトリ名を表示させることが できない。

そのディレクトリにあるファイル名を知っていて、そのファイルが「読み込み 可」なら読むことがでる。

アクセスするユーザによって異なったアクセスの許可・拒否がしたいことがあ る。そのために、rwxの指定は、ファイルの所有者、ファイルの属すグループ、 それ以外の人用に3セット用意されている。

例:モードが「rw-r--r--」のファイル

まとめると、「誰でも読めるが所有者しか書けない」。

◆ls -ld

ls コマンドは、引数としてファイル名やディレクトリ名を指定することができ る。
$ ls -l /etc/passwd [←]
-rw-r--r--  1 root  wheel  5253  2  6 16:57 /etc/passwd
$ []
ls コマンドにディレクトリ名を与えると、ディレクトリそのものではなく、そ の内容が表示される。
$ ls -l /home/lecture/syspro [←]
total 27
drwxr-xr-x   2 syspro  lecture    80  4 21 16:14 Applications
drwx------   2 syspro  lecture  1024  4 21 16:15 Desktop
drwx------  13 syspro  lecture  1024  4 21 16:15 Library
drwx------   9 syspro  lecture  1024  2 25 23:02 Maildir
drwx------   2 syspro  lecture  1024  4 21 16:15 Movies
drwx------   2 syspro  lecture  1024  4 21 16:15 Music
drwx------   2 syspro  lecture  1024  4 21 16:15 Pictures
drwx------  12 syspro  lecture  2048  4 21 16:15 _OLD_HOME_
drwxr-xr-x   4 syspro  lecture  1024  3 13 15:31 public_html
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2010
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2011
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2012
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2013
$ []
ディレクトリ自身を表示したい時には、ls -l -d (ls -ld) とする。
ls -dl /home/lecture/syspro
drwxr-xr-x  19 syspro  lecture  2048  4 21 16:15 /home/lecture/syspro
$ []

■ファイル名置換

ファイル名の一部だけをキーボードから打ち込み、 残りの部分をシェルに探させる。

補完(completion)では、人間が目で確認するが、置き換えでは人間が確認する ことはない(見つからなければエラーになる)。

例:/usr/bin にある at で始まるファイルをすべて ls コマンドに引き渡したい。1つひとつ打つと疲れる。

$ ls -l /usr/bin/at /usr/bin/atos /usr/bin/atq /usr/bin/atrm /usr/bin/atsutil [←]
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/at
-rwxr-xr-x  1 root  wheel  90960  2  6 17:03 /usr/bin/atos
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atq
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atrm
-rwxr-xr-x  1 root  wheel  25568  3 18 14:08 /usr/bin/atsutil
$ []
次のように、「*」を使うと楽に打てる。
$ ls  -l /usr/bin/at* [←]
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/at
-rwxr-xr-x  1 root  wheel  90960  2  6 17:03 /usr/bin/atos
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atq
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atrm
-rwxr-xr-x  1 root  wheel  25568  3 18 14:08 /usr/bin/atsutil
$ []
この例では、シェルが「/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 universal binary with 2 architectures
/usr/bin/at (for architecture x86_64):	  Mach-O 64-bit executable x86_64
/usr/bin/at (for architecture i386):	  Mach-O executable i386
/usr/bin/atos:    Mach-O universal binary with 2 architectures
/usr/bin/atos (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/atos (for architecture i386):	  Mach-O executable i386
/usr/bin/atq:     setuid Mach-O universal binary with 2 architectures
/usr/bin/atq (for architecture x86_64):	  Mach-O 64-bit executable x86_64
/usr/bin/atq (for architecture i386):	  Mach-O executable i386
/usr/bin/atrm:    setuid Mach-O universal binary with 2 architectures
/usr/bin/atrm (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/atrm (for architecture i386):	  Mach-O executable i386
/usr/bin/atsutil: Mach-O 64-bit executable x86_64
$ []
echo は、引数をそのまま表示するコマンド、 file は、ファイルの種類を表示するコマンドである。

◆ファイル名置換でよく使われるパタン

bash では、「*」を含めて、次のようなパタンが使える。
パタン 意味
* 任意の文字列(空でもよい)(.で始まるものを除く)
? 任意の1文字
[str] strのなかの1文字。たとえば [aA] は、a か A とマッチする。「-」があると、ASCIIでその間の文字を意味する。たとえば [0-9](数字)や[a-zA-Z](アルファベット)がよく使われる。
{str1,str2,...} 「,」で区切られたパタン str1, str2, ... を順にファイル名置換した結果を並べたもの
~username ユーザusernameのホーム・ディレクトリの絶対パス。
~/ 自分自身のホーム・ディレクトリ
~ 自分自身のホーム・ディレクトリ

よく使われる形式

*
全てのファイル名。
*.txt
最後が .txt で終わるもの。
*.[ch]
最後が .c、または、.h で終わるもの。
file[0-9]
「file」で始まり、数字で終わるファイル名
[a-z]*
英小文字で始まるファイル名
[Ww]ork
Work または work の両方、またはどれか
注意:「*」と「*.*」は違う。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  3 18 14:11 /Applications/QuickTime Player.app
$ ls -ld /Applications/QuickTime?Player.app [←]
drwxr-xr-x+ 3 root  wheel  102  3 18 14:11 /Applications/QuickTime Player.app
$ []
バックスラッシュ「\ 」や" " を使う方法もある。
$ ls -ld /Applications/QuickTime\ Player.app [←]
drwxr-xr-x+ 3 root  wheel  102  3 18 14:11 /Applications/QuickTime Player.app
$ ls -ld "/Applications/QuickTime Player.app" [←]
drwxr-xr-x+ 3 root  wheel  102  3 18 14:11 /Applications/QuickTime Player.app
$ []

■マニュアルの読み方

The Unix Super Text 8章 参照手引き 2.7.1項 参照
$ man man [←]
$ man ls [←]
$ man mkdir [←]
$ man -k keyword [←]
引数として調べたいコマンドの名前を与える。-k に続いてキーワードを与える ことで検索もできる。

後述する Emacs に付属の説明書 info を読むためのコマンドもある。

$ info info [←]
$ info bash [←]

■Emacs

手引き 3章 参照The Unix Super Text 15.1,12章 参照

◆undo

手引き 3.3.6項 参照。 undo (操作を元に戻す)という考え方がある。C-x u。

◆Emacs補完機能

The Unix Super Text 12.5.1 補完 参照 手引き 3.3.2 ファイル操作 参照

Emacs でファイル名を打つ時、補完機能を使うと便利である。 ファイル名を自分で打たなくても、Emacs が自動的に補ってくれる。

◆Emacs info

The Unix Super Text 8.6 Emacs での info マニュアルの操作 参照

Emacs のマニュアルは、Emacs の中で info という機能を実行して表示できる。

M-x info[←]
info は全体として木構造になっている。

■bashとEmacs

◆bashのコマンド行の編集機能

bash には、Emacs に似せて、コマンド行の編集機能がある。

◆bashのファイル名補完機能

Emacs には、 タブ・キーによる補完機能がある。 The Unix Super Text 12.5.1 補完 参照 手引き 3.3.2 ファイル操作 参照

類似の機能が bash にもある。ファイル名を打つ時、 cd コマンドを打つ時に便利である。

 $ cd ~/L[tab][]
 $ cd ~/Library/[]
行頭では、コマンド名を補完してくれる。

■実習

実習時間中には、以下の課題をできるだけ多く行いなさい。全部を行う必要はない。

★練習問題(401) システム情報.app

システム情報.app (System Information.app)を実行して、 実習で使う iMac の CPU の速度やメモリ量を調べなさい。

システムプロファイラ、iMac 27inch、2014年 Core i5 3.2GHz (クリックで拡大)
図? 「システム情報.app」による iMac の CPU種別、速度、メモリ量の等の表示

★練習問題(402) emacs、タブキーによる補完機能

The Unix Super Text 12.5.1 補完 参照手引き 3.3.2 ファイル操作 参照

Emacs の補完機能(タブキー)を確認しなさい。

以下の例は、/etc/passwd をタブキーにより開く例である。
  1. emacs を実行する。
    $ emacs [←]
  2. ファイルを開く。C-x C-f
    Find file: ~/[]
  3. ~/」の2文字を消す。Delete キーを 2 回打つ。
    Find file: []
  4. /e」と打ちタブを打つ
    Find file: /e[tab]
    すると、tc/が補完される。
    Find file: /etc/[]
  5. pa」と打ちタブを打つ
    Find file: /etc/pa[tab]
    すると、いくつか候補が表示される。
    In this buffer, type RET to select the completion near point.
    
    Possible completions are:
    pam.d/                             passwd
    passwordreset/                     paths
    paths.d/
    
    <中略>
    
    Find file: /etc/pa[]
    
  6. s」と打ちタブを打つ
    Find file: /etc/pas[tab]
    すると、「wd」が補完される。
    Find file: /etc/passwd[]
  7. 目的のファイル名が見つかったので、最後にリターンキーを打つ。
    Find file: /etc/passwd[←]
その他に、次のファイルを補完により開きなさい。

★練習問題(403) Emacsのundo機能

Emacs の undo 機能を利用してみなさい。
  1. emacs を実行する。 引数として、練習用のファイル(内容を壊しても良いもの)を指定する。
    $ emacs file1.txt [←]
    
  2. キーボードから内容を打ち込む。
  3. C-x u と打ち、undo の効果を確認する。 C-x u は、Control + x を打ち、Control キーを離してから u と打つ。C-x C-uではない。
  4. 2. - 3. の操作を何度か繰り返す。
  5. キーボードから内容を打ち込む。
  6. C-x u と打つ。
  7. 続けて C-x u と打つ。
  8. 続けて C-x u と打つ。
  9. 5. - 8. の操作を何度か繰り返す。
  10. 別の iTerm のウィンドウを作成し、そこで何かコマンドを実行する。
  11. iTerm のコマンドの出力を、コピーする。 コピーしたい部分を、マウスでドラッグして選択し、 一番上のメニューバーの「edit」をクリックし、 表示されるメニューで「copy」をクリックする。
  12. 11. の結果を、emacs にペーストする。
  13. C-x u を、何度か打ってみる。
  14. 次のようなキー操作を何度か行い、文字や行を削除する。
  15. C-x u を、何度か打ってみる。

★練習問題(404) bash補完機能(1)

bash の補完機能を利用して、次のファイル名を打ちなさい。
 $ ls /[]
ここまで打ったら、行末で[tab] (^I(Control+I))を1度押してみる。
 $ ls /[tab][]
1度目は何も表示が変わらない。bash や端末の設定によっては、ベルが鳴る。 行末で[tab] をもう一度してみる。
 $ ls /[tab][]
すると、ls と同じような表示がなされる。
 $ ls /
 .DS_Store                            bin/
 .DocumentRevisions-V100/             cores/
 .Spotlight-V100/                     dev/
 .TemporaryItems/                     etc/
 .Trashes/                            home/
 .com.apple.timemachine.donotpresent  mach_kernel
 .fseventsd/                          net/
 .hotfiles.btree                      opt/
 .vol/                                private/
 Applications/                        sbin/
 Library/                             tmp/
 Network/                             traces.log
 System/                              usr/
 Users/                               var/
 Volumes/                             
 $ ls /[]
目的の「usr」は、uから始まるものは、1個しかないので 「u」 とうち、[tab] を打つ。
 $ ls /u[tab][]
すると、sr/ が補完される。
 $ ls /usr/[]
[tab][tab]」([tab]を2回)打つ。
 $ ls /usr/[tab][tab][]
すると、/usr の内容が表示される。
 $ ls /usr/
 X11/        bin/        lib/        local/      sbin/       standalone/ 
 X11R6/      include/    libexec/    local3/     share/      
 $ ls /usr/[]
b [tab]」と打つ。
 $ ls /usr/b[tab][]
次のように「in/」が補完される。
 $ ls /usr/bin/[]
/usr/bin/」に対して、「[tab][tab]」と打つと、次のように警告される。
 $ ls /usr/bin/[tab][tab]
 Display all 1040 possibilities? (y or n)[]
候補が多すぎるので、ここでは表示はしないでnを打つ。
 Display all 1093 possibilities? (y or n)n
em と入れて [tab] を押す。
 $ ls /usr/bin/em[tab][]
すると、次のように「acs」が補完される。
 $ ls /usr/bin/emacs[]
これで目的のファイルを打ち込むことができた。

同様に、次のファイル名を bash の補完機能で打ってみなさい。

★練習問題(405) bash補完機能(コマンド名)

bash には、ファイル名だけでなくコマンド名を補完する機能もある。コマンド ラインの先頭で補完機能を利用すると、ファイル名ではなくコマンド名が補完 される。このことを確かめなさい。この機能を使って、次のようなコマンド名 を打ちなさい。

★練習問題(406) bashキー操作

bash の次の Emacs 風キーの働きを確認しなさい。 次の操作を行いなさい。

★練習問題(407) lv コマンド

手引き 2.6.2 参照。 lvコマンドは、長いテキスト・ファイルを対話的に1ページずつ表示するコマン ドである。lvコマンドで次のような長いテキスト・ファイルを表示してみなさ い。 例:
$ lv ~/literacy-a2.txt [←]
<表示省略。>
<「:」は、lv コマンドのプロンプト。>
<「:」に対して、lv コマンドを操作するキーを打つ事ができる。>
:[]
そして、次の機能を確認しなさい。 次のようにして、マニュアルを表示しなさい。
$ lv -h [←]
$ man lv [←]
次のキーの動作を確認しなさい。
キー 説明
スペース 1ページ進める
q 終了
f 1ページ進める(forward)
b 1ページもどる(back)
j 1行進める
k 1行もどす
g 先頭にもどる
G 末尾にもどる
/str 文字列 str をファイルの末尾に向かって探す
?str 文字列 str をファイルの先頭に向かって探す
n 直前の検索をファイルの末尾に向かって繰り返す(next)
N 直前の検索をファイルの先頭に向かって繰り返す(next)
= ファイル名、位置(行数)、文字コードを表示する

★練習問題(408) manコマンド

man コマンドで、次のコマンドのマニュアルを表示しなさい。 長いマニュアルを表示した時に自動的に lv コマンド が実行されていることを確認しなさい。lv コマンドの次のキーが有効であるこ とを確認しなさい。

★練習問題(409) man -k

man -k を使って、マニュアルの検索を行いなさい。 その結果と apropos コマンドの結果を比較しなさい。
$ man -k emacs [←]
$ apropos emacs [←]

★練習問題(410) info コマンド

info コマンドを実行しなさい。終了は、q または C-x C-c。 後述する Emacs の info と比較しなさい。
$ info info [←]
$ info bash [←]
$ info emacs [←]

★練習問題(411) Emacs の中の info 機能

Emacs を実行し、その中で info 機能を利用してみなさい。
M-x info[←]
次のキー操作を確かめなさい。
キー 説明
スペース 次のページへ
n 次の節へ移動
p 前の節へ移動
タブ 次のリンクへ移動
リターン カーソルのある位置の子供の節へ移動
m 名前を指定して、子供の節へ移動
q info を終了

★練習問題(412) 長い名前のアプリケーションの実行

/Applications/Calculator.app は、電卓のプログラムである。これをシェルか ら実行するためには、次のように open コマンドに対してパス名を与えればよい。
$ open /Applications/Calculator.app [←]
これを、ファイル名置換機能(*,?)を利用して、長い文字列をキーボードから打 たないで実行しなさい。
$ echo /App*/Cal* [←]
(1つしか表示されない確認する。複数あると問題がある。)
$ open /App*/Cal* [←]
同様に、/Applications にあるプログラムを実行してみなさい。

★練習問題(413) Emacs の機能一覧・検索

次の方法で Emacs での詳しい使い方が表示される。このことを確認しなさい。
M-x help m
機能の一覧(modeの説明)
M-x help b
キーバインディング(bindingの説明)

★練習問題(414) ls -s

ls コマンドに -s オプションをつけると、ブロック単位(標準では512バイト) のサイズを表示する。このことを確認しなさい。
$ ls [←]
$ ls -s [←]
$ ls -ls [←]
$ ls literacy-*.txt [←]
$ ls -s literacy-*.txt [←]
$ ls -ls literacy-*.txt [←]

■課題4 ハードウェア、ファイルの属性、ファイル名置換、マニュアルの読み方、Emacs補完、bash補完

次のファイルを自分のホーム・ディレクトリ等にコピーしなさい。 そして、そのファイルの指示に従い、内容を埋めなさい。エディタとしては、 今日の課題では、必ず Emacs を使いなさい。
$ ls [←]
(literacy-a4.txtが存在することを確認する)
$ emacs literacy-a4.txt [←]

作成したファイルを、 レポート提出ページから提出しなさい。


Last updated: 2016/05/06 12:38:34
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>