2011年05月06日
情報科学類 コンピュータリテラシ
筑波大学 システム情報工学研究科
コンピュータサイエンス専攻, 電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2011/2011-05-06
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
$ ls -l > file1
シェルは、「記号<」 があると、標準入力をキーボードから指定され
たファイルに切り替え、指定されたプログラムを実行する。
$ cat < file1
シェルは、「記号|」があると、次の動作を行う (パイプ(pipe)機能)。
|」の左のプログラム(プロセス)の標準出力を、右のプログ
ラム(プロセス)の標準入力に(ファイルを介することなく)接続する。
$ ls -l | head -4
total 222
drwx------ 10 yas prof 4096 4 26 18:51 Desktop
drwx------ 4 yas prof 4096 4 2 14:14 Documents
drwxr-xr-x@ 2 yas prof 4096 4 26 12:51 Downloads
$
ファイルを介しても類似の操作は可能だが、後で不要なファイルを消さなけれ
ばならない。
$ ls -l > file
$ head -4 < file
total 222
drwx------ 10 yas prof 4096 4 26 18:51 Desktop
drwx------ 4 yas prof 4096 4 2 14:14 Documents
drwxr-xr-x@ 2 yas prof 4096 4 26 12:51 Downloads
$ rm file
$
パイプは、3つ以上のプログラム(プロセス)を結びつけることもできる。
$ ls Document > file
ls: Document: No such file or directory
$ cat file
$
「Document」 は、「Documents」の打ち間違い(sがない)である。
ls コマンドは、エラー・メッセージを標準出力ではなく標準エラー出力に書き
出す。
「2>file」をつかうと、標準エラー出力をファイルに保存
することもできる。
$ ls Document > file 2>file2
$ cat file
$ cat file2
ls: Document: No such file or directory
$
「2>&1」をつかうと、標準エラー出力(2)を、標準出力
(1)に混ぜて(&)、ファイルに保存することもできる。
$ ls Document > file 2>&1
$ cat file
ls: Document: No such file or directory
$
「2>&1」は、順番が大事。ファイルに混ぜて保存する場合
は、「>file」の後にやること。先にやると、その時点で
の標準出力(画面)が指定されてしまう。
$ ls Document 2>&1 > file
ls: Document: No such file or directory
$ cat file
$
2>&1を使うと、エラー・メッセージも含めてパイプに出力
することもできる。この場合は、パイプ|より左に書く。
$ ls Document 2>&1 | head -4
ls: Document: No such file or directory
$
補完(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
$
| パタン | 意味 |
| * | 任意の文字列(空でもよい)(.で始まるものを除く) |
| ? | 任意の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/
$
$ history
1 saykotoeri2
2 saykotoeri2
3 fg
4 dup
...
500 history
$
^P / ^N で、ヒストリを
さかのぼれる。
その他に、次のような方法もある。bash では、ほとんど使われない。編集機能 がないシェルでは有効であった。
$ ls file.txt
file.txt
ここで -l を付けわすれたのに気がつく
$ ls -l !$
ls -l file.txt
-rw-r--r-- 1 yas prof 9 4 29 21:23 file.txt
$
木構造(tree structure)というのは、コンピュータ・サイエン ス(情報科学類で学ぶ学問)でよく使われる用語。 階層構造(hierarchical structure)ともいう。
木構造の例を、大学の組織を使って説明する(図?)。
筑波大学
コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。
区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。
コンピュータでは、次のような場所で木構造が使われている。
コンピュータ以外では、次のような場所で木構造が使われている。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2009-09-24/
ルート・ディレクトリの名前は、「/」 (スラッシュ 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
$
$ cp file1 file2 dir
この場合、dir 以下に、(一番葉の部分だけ)同じ名前のファイルが作られる。
次の操作と概ね同じ動作をする。
$ cp file1 dir/file1
$ cp file2 dir/file2
ディレクトリを指定する時には、カレント・ワーキング・ディレクトリ 「.」 や ホーム・ディレクトリ「〜」も使える。
$ cp /etc/group .
$ cp /etc/group ~
$ mkdir dirname
この結果、dirnameという名前のディレクトリが作らる。
$ ls dirname
この結果、ディレクトリdirnameの中(下)にあるファイルと
ディレクトリの名前が表示される。
mvコマンドは、ディレクトリの名前を変更するために使える。
$ mkdir dir1
$ ls
dir1
$ mv dir1 dir2
$ ls
dir2
$
$ rmdir dirname
この結果、
ディレクトリdirnameが削除される。
空でないディレクトリは、rmdir()コマンドでは 「Directory not empty,directorynotempty」 というエラー・メッセージが表示され削除できない。 この場合は、子供のディレクトリやファイル を削除してからもう一度削除する。
Emacs には、C-x C-s で明示的にファイルに保存しなても、ある程度
編集をすると、自動的に保存する機能がある。たとえば、
「file1.txt」
というファイルを編集していると、前後に#が付いた
「#file1.txt#」
というファイルが作られる。レポート提出時にこれを提出してはならない。自
動保存のファイルの文字コードは、EUC でも Shift_JIS でも JIS でも UTF-8
でもなく、Emacs 独自のものである。
Emacs でファイル名や関数名(M-xの後)を打つ時にも、補完機能がある。
bash の補完機能は、Emacs をまねて作られた。
(クリックで拡大)
(クリックで拡大)
$ cal 5 1011
5月 1011
日 月 火 水 木 金 土
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
$ cal 5 1011 > cal-2011-05.txt
$ cat cal-2011-05.txt
5月 1011
日 月 火 水 木 金 土
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
$
動作例:
$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
10+20
30
^D
$
bc コマンドは、プロンプトを表示しないが、ユーザが打ち込んだ数式を行単位
で計算して表示する。終了するには、入力の終わり(end of file) を意味する
^D (Control+D) を押す。コントロール・キーを押しながら、
D キーを押す。
次のような機能が利用できる。
bc に -l オプションを付けると小数が扱える。
詳しくは、man bc を見なさい。
$ cat > expressions
10+20
2^40
^D
$ cat expressions
10+20
2^40
$
次に作成した数式を、
キーボードの代わりにファイルからデータを読み込ませる。
$ bc < expressions
30
1099511627776
$
$ ls -l cal-2011-567.txt
ls: cal-2011-567.txt: No such file or directory
$ cal 5 2011 > cal-2011-567.txt
$ cal 6 2011 >> cal-2011-567.txt
$ cal 7 2011 >> cal-2011-567.txt
$ cat cal-2011-567.txt
5月 2011
日 月 火 水 木 金 土
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
6月 2011
日 月 火 水 木 金 土
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
7月 2011
日 月 火 水 木 金 土
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
$
$ ls /ここまで打ったら、行末で![]()
^I(Control+I))を1度押してみる。
$ ls /1度目は何も表示が変わらない。bash や端末の設定によっては、ベルが鳴る。 行末で![]()
$ ls /すると、ls と同じような表示がなされる。![]()
$ ls / .DS_Store Developer/ home/ .Spotlight-V100/ Library/ local3/ .SymAVx86QSFile Network/ mach_kernel .Trashes/ Pref-data/ net/ .file System/ opt/ .fseventsd/ Users/ private/ .hotfiles.btree Volumes/ sbin/ .metadata_never_index bin/ tmp/ .symSchedScanLockxz cores/ usr/ .vol/ dev/ var/ Applications/ etc/ $ 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 1093 possibilities? (y or n)
![]()
nを打つ。
Display all 1093 possibilities? (y or n)n
em と入れて $ ls /usr/bin/emすると、次のように「![]()
acs」が補完される。
$ ls /usr/bin/emacsこれで目的のファイルを打ち込むことができた。![]()
Emacs の補完機能を確認しなさい。
C-x C-f でファイルを開く
~/.emacs 等の起動時に実行されるファイルに含める方法がある。
こうすると、ファイル名に空白を使いにくくなる。
(if (boundp 'minibuffer-local-filename-completion-map)
(define-key minibuffer-local-filename-completion-map
" " 'minibuffer-complete-word))
(if (boundp 'minibuffer-local-must-match-filename-map)
(define-key minibuffer-local-must-match-filename-map
" " 'minibuffer-complete-word))
$ 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 コマンドを使って、カレント・ワーキング・ディレクトリを
ホーム・ディレクトリの下のディレクトリに変更しなさ
い。以下は、Movies に変更した例である。
$ cd
$ pwd
$ ls
$ cd Movies
$ pwd
$ ls
Movies 以外の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 と比較しなさい。
$ head /etc/services
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
#
# The latest IANA port assignments can be gotten from
#
# http://www.iana.org/assignments/port-numbers
$ tail /etc/services
isnetserv 48128/tcp # Image Systems Network Services
isnetserv 48128/udp # Image Systems Network Services
blp5 48129/tcp # Bloomberg locator
blp5 48129/udp # Bloomberg locator
# 48130-48555 Unassigned
com-bardac-dw 48556/udp # com-bardac-dw
com-bardac-dw 48556/tcp # com-bardac-dw
# Nicholas J Howes
# 48557-49150 Unassigned
# 49151 IANA Reserved
$
このコマンドの動きを確認しなさい。引数として他のファイル名(自分が作成
したレポート等)を指定して実行してみなさい。
/etc/passwd」の中にある「root」とい
う文字を含む行を表示している。
$ grep root /etc/passwd
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_cvmsroot:*:212:212:CVMS Root:/var/empty:/usr/bin/false
$
同じことを、パイプを使っても実行することができる。
$ cat /etc/passwd | grep root
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_cvmsroot:*:212:212:CVMS Root:/var/empty:/usr/bin/false
$
grep コマンドを使って次のようなことを行ってみなさい。
/etc/services にある http が含まれる行
/etc/services にある pop が含まれる行
/etc/services にある imap が含まれる行
ls が含まれる行
grep コマンドには次のようなオプションを指定することができる。
1行に1つ、なにかの名前(人名、果物の名前)を含むファイルを作成しなさい。 sort コマンドを使って、並べ替えなさい。
$ emacs fruits.txt
$ sort fruits.txt
$ sort < fruits.txt
ls -l の結果は、ファイル名の順番でソートされている。これをファイルの大 きさでソートしなさい。
$ ls -l | sort -k 5
sort コマンドでよく使うオプション
% ls -l /usr/bin | lv
% grep yes /usr/share/dict/words | lv
% tail /usr/share/dict/words | sort -r
% ls
% ls | cat
% ls | lv
パイプに出力する時にも、画面と同様の表示をさせるには、-C オプションを付
ければよい。
% ls -C
% ls -C | cat
% ls -C | lv
% history
次の方法で再実行してみないさい。
^P/^N で選択して !の後に番号
$ ls -l ~/Library/*/Firefox/Profiles/*/.parentlock
-rw-r--r-- 1 yas prof 0 4 27 15:21 /home/prof/yas/Library/Application Support/Firefox/Profiles/019kso7s.default/.parentlock
$ ls -l ~/L
以後、補完機能を使いながら打つ
Profiles の下には、.default/があるものを選ぶ
そのディレクトリの下では、.p を選ぶ
$ ls -l ~/Library/Application\ Support/Firefox/Profiles/019kso7s.default/.parentlock
-rw-r--r-- 1 yas prof 0 4 27 15:21 /home/prof/yas/Library/Application Support/Firefox/Profiles/019kso7s.default/.parentlock
$
% open /Applications/Calculator.app
これを、次のような方法を利用して、長い文字列をキーボードから打たないで
実行しなさい。
$ emacs
C-x C-f ファイルを開く(存在しないファイル名をして新規作成する)
Find file: ~/file.txt
Auto-saving...done
$ ls *file.txt*
以下は、#file.txt# というファイルが自動的に作られている。
$ ls -l *file.txt*
-rw-r--r-- 1 yas prof 4 4 29 20:44 #file.txt#
$
C-x C-s でファイルを保存する。
$ ls *file.txt*
この結果、自動的に保存されたファイルは消え、保存したものだけが現れる。
$ ls -l *file.txt*
-rw-r--r-- 1 yas prof 4 4 29 20:50 file.txt
$
$ ls *file.txt*
この結果、2つのファイルが現れる。
C-x C-s で保存したもの
$ ls -l *file.txt*
-rw-r--r-- 1 yas prof 11 4 29 20:52 #file.txt#
-rw-r--r-- 1 yas prof 4 4 29 20:50 file.txt
$
C-x C-f でファイルを開く。
Find file: ~/file.txt
すると、次のようなメッセージが表示される。
file.txt has auto save data; consider M-x recover-this-file
一瞬の表示なので、見えない時には、一度C-x k で、そのバッファを消
して、もう一度C-x C-f でファイルを開く。
M-x recover-this-file
あるいは
Esc x recover-this-file
あるいは、C-x C-f でファイルを開く変わり、
M-x recover-file![[←]](../icons/screen-return.gif)
と打ち、# がついていないファイルを指定する。
Recover file: ~/file1.txt
recover-this-file または recover-file の結果、次のように2つの
ファイルが表示され、ミニバッファ(一番下の行)に yes/no が問い合わされる。
-rw-r--r-- 1 yas prof 4 4 29 20:50 /home/prof/yas/file.txt
-rw-r--r-- 1 yas prof 11 4 29 20:52 /home/prof/yas/#file.txt#
<中略>
-EEE:%%-F1 *Directory* All L1 (Help View)------------------------------------------
Recover auto save file /home/prof/yas/#file#? (yes or no)
以下の問題について、問題、および、回答をテキスト・ファイルに記述し、 レポート提出ページから提出しなさい。 端末の表示(コマンドの実行結果)は、コピー&ペースト等の機能を使って提出 するファイルに含めなさい。
(1) シェルのファイル名置換機能を使って /usr/bin にある次のようなファイ ルをすべて表示しなさい。結果は、ls または echo コマンドで表示し、コマン ドラインを含めてその結果をレポートに含めなさい。ただし、この課題では、 ls、または、echo コマンドには、必ず絶対パス名を指定しなさい。
(2) 「cd コマンド」、および、シェルのファイル名置換機能を使って /usr/bin にある次のようなファイルをすべて表示しなさい。結果は、ls また は echo コマンドで表示し、コマンドラインを含めてその結果をレポートに含 めなさい。ただし、この課題では、ls、または、echo コマンドには、必ず相対 パス名を指定しなさい。
(3) 次のファイル名(ディレクトリ名も含めたすべて)を、ファイル名置換を使っ てなるべく短く表現しなさい。
$ ls -ld 短い表現
drwxr-xr-x@ 4 mac-admin admin 136 3 24 20:26 /Applications/Firefox.app/
$ ls -ld 短い表現
drwxr-xr-x@ 3 mac-admin admin 102 3 24 20:27 /Applications/Thunderbird.app/
$ ls -ld 短い表現
-rwxr-xr-x 1 root admin 31 4 22 2010 /usr/local3/coins/macosx/bin/firefox
$
(4) bash の補完機能を使って、次のファイル名を打ち込み、ls -ld で表示し
なさい。この時、どのようなキー操作を行ったかをレポートに書きなさい。
$ ls -ld キー操作
$ ls -ld /Applications/Firefox.app/
$ ls -ld キー操作
$ ls -ld /Applications/Thunderbird.app/
$ ls -ld キー操作
$ ls -ld /usr/local3/coins/macosx/bin/firefox
(5) 次のようなディレクトリとファイルを作成しなさい。
..」という表記を使っ
ても使わなくてもよい。)
$ 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
$
(6) [加点] /usr/bin にあるファイルのうち、ファイルファイルのサイズが大 きいもの5 個を表示するコマンドを示しなさい。
最終的に次のような結果が得られるはずである。
$ コマンド
-rwxrwxr-x 1 root admin 32330912 5 4 2010 clang
-rwxr-xr-x 1 root wheel 30364288 3 9 00:49 php
-r-xr-xr-x 1 root wheel 26135456 5 14 2010 emacs
-rwxr-xr-x 1 root wheel 7802784 5 14 2010 emacs-undumped
-rwxr-xr-x 1 root wheel 7317488 2 17 21:30 net
$
(7) [加点] The Unix Super Text 上巻「11.10節 ディレクトリスタック」を読
み、ディレクトリ・スタックの機能を利用しなさい。そのことを採点者がわか
るように、端末の表示(コマンドの実行結果)や history コマンドの結果を示し
なさい。ただし、11.10節では、シェルとして tcsh が使われている。coins の
標準のシェルは、bash である。bash と tcsh では、dirs, pushd, popd コマ
ンドの使い方は共通であるが、ディレクトリスタックの上から num 番目を参照
する機能が異なる。tcsh で=num の所、bash では
~num になる。