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/
新城の定義。情報とは、コピーしても同じものと思えるもの。物は、コピーす ると別のものになる。お金は、情報だがコピーしてはいけない。
新城の定義(その2)。情報とは、情報処理の対象となるもの。情報処理とは、 次の3つ。
外から見える人間の情報処理
人間の対話では、実は、non-verbal な情報(文字にならない情報)のやり取り が多い。非言語的な情報は、コンピュータで扱うことは苦手。
講義内容も、印刷された資料/Webの資料の情報量よりも非言語的な情報が多い。
図? ハードウェアの構成要素
保存する==書く、取り出す==読む
ハード・ディスク(HDD) の代わりに、SSD (Solid State Drive) を備えている コンピュータも多い。SSD は、IC でできているが、電源を切っても内容が消え ない。フラッシュメモリという技術がよく使われる。
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の速さは、クロックの周波数(単位は、Hz)を 目安にできる。たとえば、2GHz の CPU は、1GHz の CPU の2倍の速度が 出ると期待できるが、実際には周波数以外の技術で高速化がなされることも 多い。CPU の種類が違うと周波数の比較の意味はない。
情報量の単位。
情報量の単位、ビットやバイトには、次のような係数とともに使われる。
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~
...
$
行単位に次のようなファイルやディレクトリの属性が表示さる。
drwx------,drwxr-xr-x,-rw-------
など)
6,4,17,... など
)
yas
)
prof
)
3072,1024,25
など)
4月10日17時37分
など)
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 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 は、ファイルの種類を表示するコマンドである。
パタン | 意味 |
* | 任意の文字列(空でもよい)(.で始まるものを除く) |
? | 任意の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 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
$
$ man man
$ man ls
$ man mkdir
$ man -k keyword
引数として調べたいコマンドの名前を与える。-k に続いてキーワードを与える
ことで検索もできる。
後述する Emacs に付属の説明書 info を読むためのコマンドもある。
$ info info
$ info bash
Emacs でファイル名を打つ時、補完機能を使うと便利である。 ファイル名を自分で打たなくても、Emacs が自動的に補ってくれる。
Emacs のマニュアルは、Emacs の中で info という機能を実行して表示できる。
M-x info
info は全体として木構造になっている。
Emacs には、 タブ・キーによる補完機能がある。 The Unix Super Text 12.5.1 補完 参照 手引き 3.3.2 ファイル操作 参照。
類似の機能が bash にもある。ファイル名を打つ時、 cd コマンドを打つ時に便利である。
$ cd ~/L![]()
$ cd ~/Library/行頭では、コマンド名を補完してくれる。![]()
(クリックで拡大)
図? 「システム情報.app」による iMac の CPU種別、速度、メモリ量の等の表示
Emacs の補完機能(タブキー)を確認しなさい。
C-x C-f
でファイルを開く
/etc/passwd
をタブキーにより開く例である。
$ emacs ![[←]](../icons/screen-return.gif)
C-x C-f
Find file: ~/![[]](../icons/screen-cursor.gif)
~/
」の2文字を消す。Delete キーを 2 回打つ。
Find file: ![[]](../icons/screen-cursor.gif)
/e
」と打ちタブを打つ
Find file: /e![[tab]](../icons/screen-tab.gif)
すると、tc/
が補完される。
Find file: /etc/![[]](../icons/screen-cursor.gif)
pa
」と打ちタブを打つ
Find file: /etc/pa![[tab]](../icons/screen-tab.gif)
すると、いくつか候補が表示される。
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
s
」と打ちタブを打つ
Find file: /etc/pas![[tab]](../icons/screen-tab.gif)
すると、「wd
」が補完される。
Find file: /etc/passwd![[]](../icons/screen-cursor.gif)
Find file: /etc/passwd![[←]](../icons/screen-return.gif)
$ emacs file1.txt
C-x u
と打ち、undo の効果を確認する。
C-x u
は、Control + x を打ち、Control キーを離してから
u と打つ。C-x C-u
ではない。
C-x u
と打つ。
C-x u
と打つ。
C-x u
と打つ。
C-x u
を、何度か打ってみる。
C-d
C-k
C-SPC
と C-w
C-x u
を、何度か打ってみる。
$ ls /ここまで打ったら、行末で![]()
^I
(Control+I))を1度押してみる。
$ ls /1度目は何も表示が変わらない。bash や端末の設定によっては、ベルが鳴る。 行末で![]()
$ ls /すると、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」
とうち、$ ls /uすると、![]()
sr/
が補完される。
$ ls /usr/「![]()
$ ls /usr/すると、/usr の内容が表示される。![]()
$ ls /usr/ X11/ bin/ lib/ local/ sbin/ standalone/ X11R6/ include/ libexec/ local3/ share/ $ ls /usr/「![]()
b
$ ls /usr/b次のように「![]()
in/
」が補完される。
$ ls /usr/bin/「![]()
/usr/bin/
」に対して、「$ ls /usr/bin/候補が多すぎるので、ここでは表示はしないでDisplay all 1040 possibilities? (y or n)
![]()
n
を打つ。
Display all 1093 possibilities? (y or n)n
em
と入れて $ ls /usr/bin/emすると、次のように「![]()
acs
」が補完される。
$ ls /usr/bin/emacsこれで目的のファイルを打ち込むことができた。![]()
同様に、次のファイル名を bash の補完機能で打ってみなさい。
$ 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) |
= | ファイル名、位置(行数)、文字コードを表示する |
$ man -k emacs
$ apropos emacs
$ info info
$ info bash
$ info emacs
M-x info
次のキー操作を確かめなさい。
キー | 説明 |
---|---|
スペース | 次のページへ |
n | 次の節へ移動 |
p | 前の節へ移動 |
タブ | 次のリンクへ移動 |
リターン | カーソルのある位置の子供の節へ移動 |
m | 名前を指定して、子供の節へ移動 |
q | info を終了 |
$ open /Applications/Calculator.app
これを、ファイル名置換機能(*,?)を利用して、長い文字列をキーボードから打
たないで実行しなさい。
$ echo /App*/Cal*
(1つしか表示されない確認する。複数あると問題がある。)
$ open /App*/Cal*
同様に、/Applications にあるプログラムを実行してみなさい。
$ ls
$ ls -s
$ ls -ls
$ ls literacy-*.txt
$ ls -s literacy-*.txt
$ ls -ls literacy-*.txt
cp ~yas/public_html/htdocs/coins/literacy-2016/2016-05-02/literacy-a4.txt .注意: このコピーは、1度だけ行うこと。2度以上行うと、それまでに行った編 集内容は失われる。
$ ls
(literacy-a4.txtが存在することを確認する)
$ emacs literacy-a4.txt
作成したファイルを、 レポート提出ページから提出しなさい。