2018年06月22日 情報科学類 コンピュータリテラシ 筑波大学 システム情報系 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2018/2018-06-22
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
$ quota -v
Disk quotas for user yas (uid 1013):
Filesystem 1K blocks quota limit grace files quota limit grace
/home 959318 2764800 3072000 23138 0 0
coins の標準は、上限 3 GB (3*1024 KB)。これを超えると、ファイルを保存で
きなくなる。電子メールも受信できなくなる。
90% の 2.7 GB (2764800 KB) を超える、すなわち、残り 10% を切ると、警告
のメールが飛ぶ仕組みがあるが、メールが飛ばないこともあるので、各自自分
で気をつける。
手引き 10.9 参照。
上のユーザは、959,318 KB 使っている。 ファイル数は、23,138 個。ファイル数の上限は、設定されていない。
quota の limit を超えた時には、 不要なファイルを消す。
注意: MacOSX の「ゴミ箱」に入っているファイルもディスク容量を使用してい る。「ゴミ箱を空にする」という操作を行って初めて使用中のバイト数が減る。
^C
(Control+C)
で強制終了する。
$ du ~
(ホーム・ディレクトリ以下のファイルの容量を表示)
$ du .
(カレントワーキング・ディレクトリ以下のファイルの容量を表示)
$ du -s .
(-s で合計だけ表示)
$ du -s -k .
(-k で KB 単位で表示)
$ du -s -k *
(指定されたディレクトリ(*なのでそこにあるもの全部)単位で合計の表示)
$ du -s -k * | sort -nr | head
(合計を大きい順にソートし、その先頭 10 行を表示)
man du、
手引き 2.8.3 参照、
手引き 10.9 参照。
~/Downloads/
)にファイルを保存することがある。
ここにある不用なファイルは削除すべきである。
~/Library/Caches/
以下に
キャッシュとなるファイルを作成する。quota を圧迫している場合や、アプリ
ケーションが(古いキャッシュを参照して)うまく動作しない場合には、
rm -r等で削除する。
$ du -s ~/Library/Caches/*
1 /home/prof/yas/Library/Caches/Adobe
10516 /home/prof/yas/Library/Caches/Firefox
15642 /home/prof/yas/Library/Caches/Google
40 /home/prof/yas/Library/Caches/Metadata
4 /home/prof/yas/Library/Caches/Mozilla
13 /home/prof/yas/Library/Caches/com.apple.DictionaryManager
11 /home/prof/yas/Library/Caches/com.apple.DictionaryServices
5 /home/prof/yas/Library/Caches/com.apple.Safari
66 /home/prof/yas/Library/Caches/com.apple.nsservicescache.plist
25 /home/prof/yas/Library/Caches/com.apple.preferencepanes.cache
320 /home/prof/yas/Library/Caches/com.apple.preferencepanes.searchindexcache
0 /home/prof/yas/Library/Caches/com.apple.tiswitcher.cache
2120 /home/prof/yas/Library/Caches/com.google.SoftwareUpdate
$
ホーム・ディレクトリ ~
、デスクトップ ~/Desktop
や 書類
のディレクトリ ~/Documents
に、多くのファイルを放置することはよ
くない。ディレクトリを作成し、整理すべきである。
1つの目安は、ls コマンドで 1画面に入らない時には分割する。
ls
ls -l
ls -ld
ls -a
ls file1 file2
ls file*
mkdir dir
rmdir dir
cp file1 file2
cp file1 file2 dir1
cp dir/file1 .
mv file1 file2
mv file1 file2 dir1
mv dir/file1 .
rm file1 file2
$ ls -l
total 1
-rw-r--r-- 1 yas prof 2 6 15 21:48 file1
$ rm -i file1
remove file1? y
$ ls -l
$
シェルスクリプトや
bashのエイリアス
で、rm を自動的に rm
-i に変えることは、一般的には勧められない。「rm -i y」という操
作が、一連の操作として身に付いてしまうので。
$ ls -l
total 1
-r--r--r-- 1 yas prof 2 6 15 21:44 file1
$ rm file1
override r--r--r-- yas/prof for file1? y
$ ls -l
$
書き込みできないファイルでも、-f オプション(force) をつけると、rm コマ
ンドは、利用者に問い合わせることなく黙って削除する。
$ ls -l
total 1
-r--r--r-- 1 yas prof 2 6 15 21:53 file1
$ rm -f file1
$ ls -l
$
例:
何もしないと、自動的に再帰的な処理を行うプログラムもある。例: tar, tree, find 等。
ディレクトリに対しても mv コマンドは有効である。ディレクトリの名前を mv で変更すると、木構造で考えると、それ以下のファイルの名前を全て変更し たことと同じ効果がある。
ファイルのコピーでは、以下で述べるシンボリック・リンク等の問題があるため、 cp -r では不十分なことが多い。
rm
コマンドに -r
オプションをつけると、指定されたディレク
トリ以下の全てのディレクトリを削除する。
$ rm -r dir
rm -r
でも、書き込みできないファイルが含まれている時には、利用者
に問い合わせる。そのような問い合わせを行うことなく強制的に削除したい時
には、
-f オプション
をつけることもできる。
$ rm -rf dir
rm -r
は非常に危険なので、細心の注意にはらって実行すること。
大量の情報を保存するには、木構造を使うしかない。 しかし、木構造だけではうまくいかない。
図13 こうもりの分類(1)
図14 こうもりの分類(2)
木構造は、ファイルを整理するのに非常に強力な構造である。しかし、それだ けでは、ファイルを整理するには不都合が起きる。それを解消するために、次 のような名前で呼ばれる仕組みが用意されている。
注意:bash, csh の alias とファイル名の alias (Macintosh) は、まったくの別物。
図15 こうもりの分類(別名つき)
木構造を補う方法として、 ハイパーテキスト を使うことがある。
例:java コマンド
$ ls -l /usr/bin/java
lrwxr-xr-x 1 root wheel 74 10 7 2015 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
$
シンボリック・リンクは、ls -l で見ると、右端に l (小文字の L) と表示さ
れる。
ファイル /usr/bin/java
を参照すると、
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
にある
java
が使われる。
$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
-rwxr-xr-x 1 root wheel 54624 2 7 2014 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
$
シンボリック・リンクを作成するには、ln -s コマンドを使う。
$ ln -s oldname newname
この結果、newname
でファイルを参照すると、
oldname
というファイルが使われる。(このファイルは、
newname
と oldname
の2つの名前を持つ。)
$ cat file1
cat: file1: No such file or directory
$ echo file1 > file1
$ cat file1
file1
$ ln -s file1 slink1
$ cat slink1
file1
$ ls -l file1 slink1
-rw-r--r-- 1 yas prof 6 6 17 14:20 file1
lrwxr-xr-x 1 yas prof 5 6 17 14:20 slink1 -> file1
$ cp slink1 file2
$ ls -l file2
-rw-r--r-- 1 yas prof 6 6 17 2015 file2
$ cat file2
file1
$
cp -r や cp -R でファイルをコピーする時に、シンボリック・リンクが含まれ
ていると、問題が生じることがある。システム(MacOS, Linux, BSD)によって
cp コマンドの挙動が異なる。シンボリック・リンクをシンボリック・リンクと
してコピーするには、tar コマンド等を使い、cp を使わない方が良い。
$ du ~/.Trash/
1 /home/prof/yas/.Trash//名称未設定フォルダ
26 /home/prof/yas/.Trash/
$
$ file .bashrc .emacs /bin/ls public_html/htdocs/index.html.en
.bashrc: ASCII text
.emacs: Lisp/Scheme program text
/bin/ls: Mach-O 64-bit executable x86_64
public_html/htdocs/index.html.en: HTML document text
$
^C
(Control+C)
で強制終了する。
$ du ~/Desktop
$ du ~/Documents
$ du ~/Downloads
$ du ~/Library/Caches
$ ls -d D*
Desktop Documents Downloads
$ du -s D*
155115 Desktop
43227 Documents
144962 Downloads
$ du -s -h D*
76M Desktop
21M Documents
71M Downloads
$ du -s -k D*
77558 Desktop
21614 Documents
72481 Downloads
$
~/Library/Caches/Firefox/Profiles/*/cache2/entries
$ cd ~/Library/Caches/Firefox/Profiles/*/cache2/entries
$ ls -l
$ file *
$ du -h
file コマンド
は、ファイルの種類を推定して表示するコマンドである。ファイルの拡張子が
なくても、画像や HTML 等を推定できる。
du コマンド
は、ディスクの使用量(disk usage)を表示するコマンドである。
手引き 2.8.3 参照、
手引き 10.9.1 参照。
実行例
$ cd ~/Library/Caches/Firefox/Profiles/*/cache2/entries
$ file *
006309EAFFD4653F45B69F09BF6F930B6C5B394C: HTML document text
010373204138EBE73E75A5935139FBE5159574DA: PNG image data, 471 x 170, 8-bit colormap, non-interlaced
01411C7B7D29B77239ADD6E1444AF735CF58EDAA: data
01B0B8F5A4CF26E30ABE4F537A04FDD2A769E1E3: data
02071B585FF428DA83F1E4771B34B0448CE22DB9: data
024B2D783D20A9528AFF7608FBBC242F09A56F7C: data
0298A6896A40F67AB5A8A2BC7CF8A2A686AF7797: gzip compressed data, from Unix
02A6CF51FEFDBB859AF2B3ABBCFF533F4B56FF75: gzip compressed data, from Unix, max speed
03868AAF0B3AF200ED91951DD663C59643712DF3: GIF image data, version 89a, 1 x 1
041D89FF5E95B5856742F2D33817E0F50850DED0: gzip compressed data, from Unix
....
$
その他の Web ブラウザについては、次のディレクトリ、その子供、親、兄弟の ディレクトリを観察してみなさい。
2018年6月26日: Firefox 60 (mac版) では、 以下の方法ではキャッシュの上限が設定が設定できない。 アドレスバーに about:conrig と打ち、その中で Browser.cache.disk.capacity を設定する方法がある。
Webブラウザは、一度ネットワーク経由で取得したデータをファイルにキャッシュ として保存して、次にアクセスした時に高速に表示する(ネットワークを使わ ないで表示する)機能がある。この機能がどのように働いているかを確認しなさい。
Firefox では、次のようして設定できる。
自分が使っている Web ブラウザで、次のことを調べなさい。
2018年6月26日: Firefox について、手引きの方法は古い。 以下の方法を試してみなさい。
$ ls ~/Library/Caches
$ ls -l ~/Library/Caches
$ ls -lR ~/Library/Caches
$ du ~/Library/Caches
$ du -s ~/Library/Caches/*
$ du -sh ~/Library/Caches/*
不用ならば、削除しなさい。アプリケーションが動作していない時に削除する
ことが望ましい。
$ ls ~/Library/Caches
$ rm -r ~/Library/Caches
$ quota
$ quota -v
この結果と、 du コマンド の結果を比較しなさい。
$ du -s -k ~
(表示までに時間がかかる。強制終了したければ、^C)
.DS_Store
」や「._.DS_Store
」というファイ
ルが作られることがある。これは、Finder がアイコンの位置等を保持するため
のファイルである。このファイルは、ls コマンドでは表示されないが、次のよ
うに -a オプションを使ったり、「*」を使うと表示される。
$ ls -a
.
..
(中略)
.DS_Store
(中略)
._.DS_Store
(中略)
$ ls .*DS*
.DS_Store ._.DS_Store
$ ls -l .*DS*
-rw-r--r--@ 1 yas prof 24580 6 17 11:44 .DS_Store
-rw-r--r-- 1 yas prof 4096 3 14 2014 ._.DS_Store
$ ls -l ~/Desktop/.*DS*
-rw-r--r--@ 1 yas prof 12292 4 25 17:07 /home/prof/yas/Desktop/.DS_Store
-rw-r--r-- 1 yas prof 4096 4 7 2014 /home/prof/yas/Desktop/._.DS_Store
$
これを観察してみなさい。rmdir でディレクトリを削除する時に、このファイ
ルが邪魔をして削除できないことがある。この時には、このファイルを削除し
なさい。
$ ls .*DS*
.DS_Store ._.DS_Store
$ rm .*DS*
$
._
」が始まるファイル名のファイルが作られることが
ある。これは、他の Unix にはない、MacOSX 独自の
ファイルの属性(
ファイルの属性、
ファイルの属性(2)、
)
(メタデータ)を表すものである。独自の属性としては、ファイルを作成した時
刻や作成したプログラムがある。
$ ls ._*
._.DS_Store ._audio-sampling.png
._Desktop ._fj-meetings-coins.eml
._Library ._shinjo-picture-2018-05-10.jpeg
._audio-sampling-2.png
$
これを観察してみなさい。rmdir でディレクトリを削除する時に、このファイ ルが邪魔をして削除できないことがある。この時には、このファイルを削除し なさい。
$ ls ._*
(表示して確認)
$ rm ls ._*
$
$ mkdir ~/dir1
$ ls ~/dir1
(最初は空)
$ cd ~/dir1
$ ls
(最初は空)
$ emacs file1.txt
$ ls
file1.txt
$ ls
(削除するファイルの確認)
$ rm file1.txt
(削除。成功すると何も表示されない。)
$ rm file1.txt~
(もし、「~」付きのファイルがあれば、削除。成功すると何も表示されない。)
$ ls
(ディレクトリが空であることの確認)
$ cd ..
(1個上のディレクトリに移動。)
$ ls ~/dir1
(ディレクトリが空であることの確認)
$ ls -d ~/dir1
(ディレクトリが存在すること確認)
$ rmdir ~/dir1
(ディレクトリの削除。成功すると何も表示されない。)
$ ls -d ~/dir1
(エラーが表示されることにより、ディレクトリが削除されたことを確認)
$
ls コマンドは、「.」から始まるファイル名を表示しない。ls コマンドに -a オプションを付けると、表示する。
ディレクトリを削除しようとした時に、ls コマンドで表示されないが、「.」 で始まるファイルがあるために、削除できないことがある。このことを確認し なさい。 たとえば、 .DS_Storeや 「._」から始まるファイル名 のファイルが存在することがある。
$ mkdir ~/from_dir
$ mkdir ~/to_dir
$ cd ~/from_dir
$ echo 1 > file1.txt
$ echo 2 > file2.txt
$ echo 3 > file3.txt
$ ls *.txt
$ ls *.txt
(移動するファイルの確認)
$ ls ~/to_dir
(移動する先のディレクトリの確認)
$ mv *.txt ~/to_dir
(移動。成功すると何も表示されない。)
$ ls ~/to_dir
(移動した先のディレクトリの確認)
$ mkdir ~/dir1
$ cd ~/from_dir
$ echo 1 > file1.txt
$ ls
(ファイル名の確認)
$ mv file1.txt file2.txt
(改名。成功すると何も表示されない。)
$ ls
(ファイル名の確認)
$ open ~/from_dir
$ open ~/to_dir
option キーを押しながらドラッグすると、移動ではなく、コピーになる。 このことを確認しなさい。
なお、コピーを行った後、元のファイルを消せば実質的に移動(改名)になる。
名称未設定フォルダ
」という名前のフォルダが作成される。
$ open ~/.Trash/
$ cd ~/.Trash/
$ ls
$ ls -l
$ du .
$ du -s .
$ cd ~
$ ls -R . | lv
$ ls -lR . | lv
$ ls -laR . | lv
-R
オプションは、このようにしばしば-l
オプションや
-a
オプションと一緒に使われる。また、-R
オプションは、大
量の結果を表示することが多いので、パイプに出力してページャで表示するこ
とが多い。
(これらのオプションを忘れた人は、man コマンドを見なさい。)
$ ls -l /Applications | grep '^l'
ここで、'^l'
は、
行の先頭がl
で始
まるという意味である。
The Unix Super Text 第32章 正規表現 参照。
$ lynx .
$ lynx ~
$ w3m .
$ w3m ~
C-u M-x help ![[←]](../icons/screen-return.gif)
t
English ![[←]](../icons/screen-return.gif)
(1) quotaコマンドを実行しなさい。この表示の中 で、ファイルを作成したり、Web ブラウザがキャッシュを保存すると、変化す ると思われる部分と変化しない部分がある。変化する部分は、何を意味するの か説明しなさい。変化しなかった部分で、重要な数字を1つ選び、何を意味す るのか説明しなさい。
(2) coins の個人のホームディレクトリで利用可能な領域を増やすために、不 用なファイルを削除すると良い。不用なファイルがしばしば存在する場所を2つ 上げなさい。 そこにある不用なファイルを削除する方法を簡単に説明しなさい。(実際には削 除しなくても良い。レポートには、その方法だけを説明すれば良い。)
(3) 新Linux/UNIX入門の次の部分を読みなさい。
(4) 次の文書を読みなさい。
ガイドラインの中で、意味が分からない用語があれば、用語集を調べなさい。 ガイドラインの中から疑問に思ったこと、または、改善すべきと思ったことを 2項目以上示しなさい。この時、次のような情報を含めなさい。(5) [加点] mkdir, rmdir, cp, mv, rm 等のコマンドや Finder を用いて、ファ イルを整理しなさい。レポートには次の項目を含めなさい。
ディレクトリ構成の説明には、 treeコマンド の結果を利用してもよい。ただし、今回整理した部分だけを含めるこ と。~/Library/ など、自分では整理しなかったファイルについては、含めない こと。
課題が出される前に既にディレクトリを作成して既に既に整った状況であった 場合には、問題点の代わりに整理の考え方について説明しなさい。またディレ クトリを新たに作成する代わりに既存のディレクトリについて報告しなさい。
(6) [加点] Emacs で、英語でチュートリアルを実施しなさい。開始日時と終了 日時を報告しなさい。