- 第 5 回 UNIX入門(3) ... シェル/応用プログラム

ワイルドカードの練習

シェル(shell)とカーネル(kernel)


シェルの操作

教科書p85-102


リダイレクト

入力を受け付けて、結果を出力する一般的なコマンドの場合、入力元は標準入力、出力先は標準出力になっている。一般に標準入力はキーボード、標準出力はディスプレイが割り当てられている。

リダイレクトの例

簡単な計算をするコマンド bc

$ bc -l                                                               ← "-l"オプションを付けて起動
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'.
1+2                                                                   ←キーボードから計算式を入力
3                                                                     ←結果が出力される
256*256                                                               ←キーボードから計算式を入力
65536                                                                 ←結果が出力される
sqrt(2)                                                               ←キーボードから計算式を入力
1.41421356237309504880                                                ←結果が出力される
1$                                                                    ^Dでbcを終了

このコマンドのイメージ

標準入力から式の入力
通常はキーボード
"<"でファイルに切替
bcコマンド
標準出力へ結果の出力
通常はディスプレイ
">"または">>"でファイルに切替

リダイレクト処理の練習

emacsやvi等で、次のような内容のテキストファイルを作ります。

ファイル名 shiki1.txt shiki2.txt
内容 1+2
256*256
sqrt(2)
5-2
10/3
s(3.14159/2)

以下の各コマンドを実行して、結果を確認してください。

この結果生成されたテキストファイルkekka1.txt 〜 kekka4.txtの内容を確認し、なぜそのような結果になるか考察しなさい。

パイプ処理

フィルタ処理の練習

以下の内容のテキストファイル"list.txt"を作成しなさい。

H22FI001,T.Saito
H22FI002,T.Saito
H22FI003,T.Saito
H22FI004,T.Saito
H22FI005,T.Saito
H22FI006,T.Saito
H22FI007,T.Saito
H22FI008,T.Saito
H22FI009,T.Saito
H22FI010,T.Saito
H22FI011,N.Osaka
H22FI012,N.Osaka
H22FI013,N.Osaka
H22FI014,N.Osaka
H22FI015,N.Osaka
H22FI016,N.Osaka
H22FI017,N.Osaka
H22FI018,N.Osaka
H22FI019,N.Osaka
H22FI020,N.Osaka
H22FI021,H.Yasuda
H22FI022,H.Yasuda
H22FI023,H.Yasuda
H22FI024,H.Yasuda
H22FI025,H.Yasuda
H22FI026,H.Yasuda
H22FI027,H.Yasuda
H22FI028,H.Yasuda
H22FI029,H.Yasuda
H22FI030,H.Yasuda
H22FI031,H.Koyama
H22FI032,H.Koyama
H22FI033,H.Koyama
H22FI034,H.Koyama
H22FI035,H.Koyama
H22FI036,H.Koyama
H22FI037,H.Koyama
H22FI038,H.Koyama
H22FI039,H.Koyama
H22FI040,H.Koyama
H22FI041,R.Sasaki
H22FI042,R.Sasaki
H22FI043,R.Sasaki
H22FI044,R.Sasaki
H22FI045,R.Sasaki
H22FI046,R.Sasaki
H22FI047,R.Sasaki
H22FI048,R.Sasaki
H22FI049,R.Sasaki
H22FI050,R.Sasaki
H22FI051,T.Takahashi
H22FI052,T.Takahashi
H22FI053,T.Takahashi
H22FI054,T.Takahashi
H22FI055,T.Takahashi
H22FI056,T.Takahashi
H22FI057,T.Takahashi
H22FI058,T.Takahashi
H22FI059,T.Takahashi
H22FI060,T.Takahashi
H22FI061,Y.Yoshinari
H22FI062,Y.Yoshinari
H22FI063,Y.Yoshinari
H22FI064,Y.Yoshinari
H22FI065,Y.Yoshinari
H22FI066,Y.Yoshinari
H22FI067,Y.Yoshinari
H22FI068,Y.Yoshinari
H22FI069,Y.Yoshinari
H22FI070,Y.Yoshinari
H22FI071,K.Abe
H22FI072,K.Abe
H22FI073,K.Abe
H22FI074,K.Abe
H22FI075,K.Abe
H22FI076,K.Abe
H22FI077,K.Abe
H22FI078,K.Abe
H22FI079,K.Abe
H22FI080,K.Abe
H22FI081,K.Miyazaki
H22FI082,K.Miyazaki
H22FI083,K.Miyazaki
H22FI084,K.Miyazaki
H22FI085,K.Miyazaki
H22FI086,K.Miyazaki
H22FI087,K.Miyazaki
H22FI088,K.Miyazaki
H22FI089,K.Miyazaki
H22FI090,K.Miyazaki
H22FI091,N.Tetsutani
H22FI092,N.Tetsutani
H22FI093,N.Tetsutani
H22FI094,N.Tetsutani
H22FI095,N.Tetsutani
H22FI096,N.Tetsutani
H22FI097,N.Tetsutani
H22FI098,N.Tetsutani
H22FI099,N.Tetsutani
H22FI100,N.Tetsutani
H22FI101,Y.Tobe
H22FI102,Y.Tobe
H22FI103,Y.Tobe
H22FI104,Y.Tobe
H22FI105,Y.Tobe
H22FI106,Y.Tobe
H22FI107,Y.Tobe
H22FI108,Y.Tobe
H22FI109,Y.Tobe
H22FI110,Y.Tobe
H22FI111,M.Kawasumu
H22FI112,M.Kawasumu
H22FI113,M.Kawasumu
H22FI114,M.Kawasumu
H22FI115,M.Kawasumu
H22FI116,M.Kawasumu
H22FI117,M.Kawasumu
H22FI118,M.Kawasumu
H22FI119,M.Kawasumu
H22FI120,M.Kawasumu
H22FI121,H.Masuda
H22FI122,H.Masuda
H22FI123,H.Masuda
H22FI124,H.Masuda
H22FI125,H.Masuda
H22FI126,H.Masuda
H22FI127,H.Masuda
H22FI128,H.Masuda
H22FI129,H.Masuda
H22FI130,H.Masuda
H22FI131,H.Masuda
H22FI132,K.Nakajima
H22FI133,K.Nakajima
H22FI134,K.Nakajima
H22FI135,K.Nakajima
H22FI136,K.Nakajima
H22FI137,K.Nakajima
H22FI138,K.Nakajima
H22FI139,K.Nakajima
H22FI140,K.Nakajima
H22FI141,K.Nakajima
H22FI142,K.Nakajima

catコマンドで内容を表示させなさい。

cat list.txt

自分の学籍番号が含まれる行のみを表示しなさい。(注:このリストでは、機密保持のため学籍番号の書式を変えてある)

grep 自分の学籍番号 list.txt

アドバイザの先生が自分と同じ人の一覧を表示させなさい。

grep 自分のアドバイザ list.txt

アドバイザの先生が自分以外の人の一覧を表示させなさい。

grep -v 自分のアドバイザ list.txt

パイプ処理の練習(教科書p95)

自分の学籍番号が含まれない行のみを表示しなさい。

grep -v 自分の学籍番号 list.txt

このままでは確認が難しいので、パイプ処理でlessに送ります。

grep -v 自分の学籍番号 list.txt | less

教科書p92の

ps -ef

を実行した結果を確認しなさい。続いて教科書p95の

ps -ef | less

の実行結果を考察しなさい。

エイリアス

教科書の内容を確認しなさい。

ジョブ制御

xeyes

xeyes &

の違いを確認しなさい。

xeyes

で起動した後、^Zで中断し、fgとbgの違いを確認しなさい。

kill で xeyes を止めてみなさい。

ヒストリ機能

教科書の内容を確認しなさい。

練習

以下のようなリダイレクトができるようにする。

ワイルドカードによるファイルの指定を理解しておく。

エイリアスの指定方法。

ジョブ制御について、フォアグラウンドとバックグラウンドの違い、サスペンドしたジョブの再開方法など。

教科書p101-102の問1〜問5をやっておく。

復習

教科書やman、jman等で以下のコマンドの働きについて調べておきなさい。また実際に使って試してみなさい。

cal
cd
chmod
chown
cp
file
find
jman
last
less
lha
logout
ls
man
mkdir
more
mv
passwd
pwd
rm
rmdir
shutdown
tail
tree
useradd
userdel
who
whoami