OS/2006-F07
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
* (演習)UNIXのシェル [#hb749fbd]
** 目次 [#o7632a21]
#contents
** 準備 [#nbe7f5e4]
- 大学のサーバにログインしてLinuxを使う。ログインにはたと...
-サーバ名は x.educ.tamagawa.ac.jp である。
- また,Cygwinというソフトを使うと、WindowsでもUNIXのシェ...
-- http://www.cygwin.com
-- http://www.sixnine.net/cygwin/
** シェルコマンド [#id51bb33]
*** 基本コマンド [#u3cb41b7]
- マニュアルの閲覧
-- man
-- 以下のようにタイプして実行してみよ。
man man
- ディレクトリ操作
-- ls
-- pwd
-- cd
-- mkdir
-- rmdir
- ファイル操作
-- cp
-- rm
-- mv
-- ln
-- chmod
- プロセス操作
-- ps
-- kill
*** プロセス操作 [#m082a650]
psは現在稼働中のプロセスの状態を示し,killはそれを強制終...
+ サーバにログインしたウィンドウを2つ作り,片方で下記のよ...
ping www.tamagawa.ac.jp.
+ 動き続けているpingは[Control]+[C]でとめられるが,これを...
+ もう一つのターミナルウィンドウから,下記のように入力し...
ps -x
+ このなかにpingというのがあるはずなので,そのPID (プロセ...
+ pingのPIDがたとえば12345なら,下記のようにタイプしてみ...
kill 12345
*** ワイルドカード [#k7155502]
シェルのコマンドラインでは、ファイル名を指定するときにワ...
ワイルドカード「*」と「?」の意味について調べなさい。
*** リダイレクトとパイプ [#c49409a9]
シェルコマンドは「|」(縦棒)で接続し、前のコマンドの出力...
これをパイプ(パイプライン)と呼ぶ.たとえば,
ls -l | more
とするとls -lの結果を1ページずつ止めてみることが出来る.
また、リダイレクト「>」を用いると、コマンドの出力結果をフ...
ls > tako
とすると,lsの結果をtakoというファイルに書き込んでくれる。
逆に「<」を用いると、ファイルの内容をコマンドの入力にする...
** シェルスクリプト [#wc18894a]
*** シェルスクリプトとは? [#b444b564]
シェルにおける一連のコマンド操作をプログラムとしてファイ...
たとえば、以下のような手順でシェルスクリプトを作成する。
+ テキストエディタで、以下の内容のファイルを作成する。
#! /bin/sh
echo "---start---"
ps -aux | grep X
echo "----end---"
+ このファイルを、psxという名前で保存する。
+ 次のようにタイプして、psxを実行可能にする。
chmod 755 psx
+ psxを実行する。何が起こるか?
./psx
つまり、以上のようにすると、コマンドラインで「./psx」と打...
なお、1行目の「#! /bin/sh」はシェルスクリプトを実行するシ...
*** シェル変数 [#dcce2ab8]
シェルスクリプトの中では(中でなくても)、変数を使うこと...
- 変数への代入は、「変数名=値」とする。
- 変数の値の参照は、頭にドルマークをつけて「$変数名」とす...
- 下記はシェルスクリプトの例。
#! /bin/sh
msg="This is a pen."
echo $msg
- コマンドライン引数は、「$*」という特殊な変数で得られる。
#! /bin/sh
echo $*
- コマンドライン引数を1ずつ取り出したいときには、「$1」「...
#! /bin/sh
echo $3 $2 $1
- キーボードから文字列を読み込むには、readというコマンド...
#! /bin/sh
read str
echo $str
- コマンドの実行結果を変数に代入するには、「`」(バックク...
#! /bin/sh
lsout=`ls -la`
echo $lsout
*** 制御構造 [#e5514378]
シェルスクリプトの中では、各種制御構造が使える。
- if
if 条件文
then
条件文と一致した場合の処理
fi
if 条件文
then
条件文と一致した場合の処理
else
条件文と一致しなかった場合の処理
fi
-- 実際にはifは、たいてい [ ] というコマンドと一緒に使う...
#! /bin/sh
read key
if [ "$key" = "y" ]
then
echo "YES!"
else
echo "NO!"
fi
-- コマンド [ ] の詳しい説明は、「man test」で調べること...
- while
while 条件文
do
条件文と一致した時の処理
done
-- シェルスクリプトの例。
#! /bin/sh
key="y"
while [ "$key" = "y" ]
do
echo -n "continue? (y/n) "
read key
done
echo "end."
- for
for 変数 in リスト
do
リストの項目を1つずつ変数に代入して処理
done
-- シェルスクリプトの例。
#! /bin/sh
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
- case
case 文字列 in
パターン1) パターン1に一致した時の処理 ;;
パターン2) パターン2に一致した時の処理 ;;
esac
** 演習課題 [#v503dff0]
【問1】 下記のコマンドの役割を調べ,それぞれ1つ以上の使用...
+ ls
+ pwd
+ cd
+ mkdir
+ rmdir
+ cp
+ rm
+ mv
+ ln
+ chmod
+ cat
+ head
+ sort
+ grep
+ find
+ who
+ passwd
+ ps
+ kill
+ history
【問2】 以下のコマンドが、それぞれ何をしているのか調べな...
+ echo Hello! > hello.txt
+ ps -ef | more
+ ps -ef | grep root > ps-root.txt
+ find /etc -name "*tab" -print
+ cat *.txt > goodbye.txt
【問3】 以下のような操作を実現するシェルコマンドを示しな...
+ ホームディレクトリの下に、「os2006」というディレクトリ...
+ 現在コンピュータで動いているプロセスの一覧を、ユーザ名...
+ ディレクトリ「/usr/man」とそのサブディレクトリの中から...
+ コマンド「du」を用いると、指定したディレクトリとそのサ...
-- du の使用例
du /usr/lib
** 発展課題 [#c5c7c96e]
【問4】 以下のような動作をするシェルスクリプトを作成しな...
以下のような手順を実現するシェルスクリプトを作成しなさい。
+ 画面に「Hello!」と表示するシェルスクリプト。
-- 実行例
$ ./hello ← たとえば hello という名前のシェルスク...
Hello! ← 実行結果。
-- ヒント: echo
+ コマンド引数で指定したディレクトリに、C言語のソースファ...
-- 実行例
$ ./findc prog ← prog というディレクトリを調べる。
prog/test1.c ← 実行結果。見付かったファイルが列挙され...
prog/test2.c
prog/test3.c
-- ヒント: find, 引数の取り出し($1)
+ キーボードからの入力を求め、それが「L」だったら「LEFT」...
-- 実行例
$ ./asklr ← シェルスクリプトの実行。
Input L or R ? ← 「L」か「R」を入力するように要求してく...
R ← ユーザが「R」と入力。
RIGHT ← 結果表示。
-- ヒント: read, if
+ コマンドの引数で与えられた複数の文字列をたてに表示する...
-- 実行例
$ ./vecho yamada takeuchi nakamura shiozawa gogo!
yamada
takeuchi
nakamura
shiozawa
gogo!
-- ヒント: for, 引数の取り出し($*)
【問5】 以下のような動作をするシェルスクリプトを作成しな...
+ コマンド引数で与えられたファイルを、誰からも読めなくす...
-- 実行例
$ ./secret himitsu.txt
+ C言語のソースファイル(拡張子が .c のファイル)を全部つ...
-- 実行例(リダイレクト(>)が不要にしてもよい)
$ ./cmerge > cfiles.txt
+ 「Hello!」と表示するシェルスクリプトを改良して、自分の...
-- 実行例
$ ./hi
Hi! My name is a01.cad.eng.tamagawa.ac.jp.
+ ユーザが「stop」と入力するまで、時刻を表示し続けるシェ...
-- 実行例
$ ./dateloop ← シェルスクリプト...
2005年 5月 11日 水曜日 11:44:01 JST ← 時刻を表示して入...
← ただ [Enter] を...
2005年 5月 11日 水曜日 11:44:05 JST
aaaa ← 適当な文字や、
2005年 5月 11日 水曜日 11:44:36 JST
123 ← 適当な数字を入れ...
2005年 5月 11日 水曜日 11:44:40 JST
stop ← 「stop」と入力す...
+ コマンドラインで指定した月(複数)のカレンダを表示する...
-- 実行例
$ ./mcal 4 5 ←コマンドの入力。4月と5月を指定。
April 2005 ←以下、結果出力。4月と5月のカレン...
Su Mo Tu We Th Fr Sa
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
May 2005
Su Mo Tu We Th Fr Sa
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
** 参考資料 [#r3b40a57]
- http://www.tokaido.co.jp/syoko/handyman/contents.html
- http://www.wakhok.ac.jp/~maruyama/Unix92/Unix92.html
- http://www.mita.cc.keio.ac.jp/manual/unix/UNIX.html
- http://www.ep.sci.hokudai.ac.jp/~inex/y2004/1029/jitsug...
- http://www.mlab.im.dendai.ac.jp/~tobe/xp-2/linux3.html
- http://warp.syns.net/10/
- http://www.stackasterisk.jp/tech/systemManagement/bash0...
- http://www.ybi.co.jp/koike/src/BSH.htm
- http://www.atmarkit.co.jp/flinux/rensai/theory08/theory...
- http://www.elect.chuo-u.ac.jp/tsuki/~tsun/lang/sh/
- http://www.ep.sci.hokudai.ac.jp/~inex/y2002/1101/1101_s...
以上
終了行:
* (演習)UNIXのシェル [#hb749fbd]
** 目次 [#o7632a21]
#contents
** 準備 [#nbe7f5e4]
- 大学のサーバにログインしてLinuxを使う。ログインにはたと...
-サーバ名は x.educ.tamagawa.ac.jp である。
- また,Cygwinというソフトを使うと、WindowsでもUNIXのシェ...
-- http://www.cygwin.com
-- http://www.sixnine.net/cygwin/
** シェルコマンド [#id51bb33]
*** 基本コマンド [#u3cb41b7]
- マニュアルの閲覧
-- man
-- 以下のようにタイプして実行してみよ。
man man
- ディレクトリ操作
-- ls
-- pwd
-- cd
-- mkdir
-- rmdir
- ファイル操作
-- cp
-- rm
-- mv
-- ln
-- chmod
- プロセス操作
-- ps
-- kill
*** プロセス操作 [#m082a650]
psは現在稼働中のプロセスの状態を示し,killはそれを強制終...
+ サーバにログインしたウィンドウを2つ作り,片方で下記のよ...
ping www.tamagawa.ac.jp.
+ 動き続けているpingは[Control]+[C]でとめられるが,これを...
+ もう一つのターミナルウィンドウから,下記のように入力し...
ps -x
+ このなかにpingというのがあるはずなので,そのPID (プロセ...
+ pingのPIDがたとえば12345なら,下記のようにタイプしてみ...
kill 12345
*** ワイルドカード [#k7155502]
シェルのコマンドラインでは、ファイル名を指定するときにワ...
ワイルドカード「*」と「?」の意味について調べなさい。
*** リダイレクトとパイプ [#c49409a9]
シェルコマンドは「|」(縦棒)で接続し、前のコマンドの出力...
これをパイプ(パイプライン)と呼ぶ.たとえば,
ls -l | more
とするとls -lの結果を1ページずつ止めてみることが出来る.
また、リダイレクト「>」を用いると、コマンドの出力結果をフ...
ls > tako
とすると,lsの結果をtakoというファイルに書き込んでくれる。
逆に「<」を用いると、ファイルの内容をコマンドの入力にする...
** シェルスクリプト [#wc18894a]
*** シェルスクリプトとは? [#b444b564]
シェルにおける一連のコマンド操作をプログラムとしてファイ...
たとえば、以下のような手順でシェルスクリプトを作成する。
+ テキストエディタで、以下の内容のファイルを作成する。
#! /bin/sh
echo "---start---"
ps -aux | grep X
echo "----end---"
+ このファイルを、psxという名前で保存する。
+ 次のようにタイプして、psxを実行可能にする。
chmod 755 psx
+ psxを実行する。何が起こるか?
./psx
つまり、以上のようにすると、コマンドラインで「./psx」と打...
なお、1行目の「#! /bin/sh」はシェルスクリプトを実行するシ...
*** シェル変数 [#dcce2ab8]
シェルスクリプトの中では(中でなくても)、変数を使うこと...
- 変数への代入は、「変数名=値」とする。
- 変数の値の参照は、頭にドルマークをつけて「$変数名」とす...
- 下記はシェルスクリプトの例。
#! /bin/sh
msg="This is a pen."
echo $msg
- コマンドライン引数は、「$*」という特殊な変数で得られる。
#! /bin/sh
echo $*
- コマンドライン引数を1ずつ取り出したいときには、「$1」「...
#! /bin/sh
echo $3 $2 $1
- キーボードから文字列を読み込むには、readというコマンド...
#! /bin/sh
read str
echo $str
- コマンドの実行結果を変数に代入するには、「`」(バックク...
#! /bin/sh
lsout=`ls -la`
echo $lsout
*** 制御構造 [#e5514378]
シェルスクリプトの中では、各種制御構造が使える。
- if
if 条件文
then
条件文と一致した場合の処理
fi
if 条件文
then
条件文と一致した場合の処理
else
条件文と一致しなかった場合の処理
fi
-- 実際にはifは、たいてい [ ] というコマンドと一緒に使う...
#! /bin/sh
read key
if [ "$key" = "y" ]
then
echo "YES!"
else
echo "NO!"
fi
-- コマンド [ ] の詳しい説明は、「man test」で調べること...
- while
while 条件文
do
条件文と一致した時の処理
done
-- シェルスクリプトの例。
#! /bin/sh
key="y"
while [ "$key" = "y" ]
do
echo -n "continue? (y/n) "
read key
done
echo "end."
- for
for 変数 in リスト
do
リストの項目を1つずつ変数に代入して処理
done
-- シェルスクリプトの例。
#! /bin/sh
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
- case
case 文字列 in
パターン1) パターン1に一致した時の処理 ;;
パターン2) パターン2に一致した時の処理 ;;
esac
** 演習課題 [#v503dff0]
【問1】 下記のコマンドの役割を調べ,それぞれ1つ以上の使用...
+ ls
+ pwd
+ cd
+ mkdir
+ rmdir
+ cp
+ rm
+ mv
+ ln
+ chmod
+ cat
+ head
+ sort
+ grep
+ find
+ who
+ passwd
+ ps
+ kill
+ history
【問2】 以下のコマンドが、それぞれ何をしているのか調べな...
+ echo Hello! > hello.txt
+ ps -ef | more
+ ps -ef | grep root > ps-root.txt
+ find /etc -name "*tab" -print
+ cat *.txt > goodbye.txt
【問3】 以下のような操作を実現するシェルコマンドを示しな...
+ ホームディレクトリの下に、「os2006」というディレクトリ...
+ 現在コンピュータで動いているプロセスの一覧を、ユーザ名...
+ ディレクトリ「/usr/man」とそのサブディレクトリの中から...
+ コマンド「du」を用いると、指定したディレクトリとそのサ...
-- du の使用例
du /usr/lib
** 発展課題 [#c5c7c96e]
【問4】 以下のような動作をするシェルスクリプトを作成しな...
以下のような手順を実現するシェルスクリプトを作成しなさい。
+ 画面に「Hello!」と表示するシェルスクリプト。
-- 実行例
$ ./hello ← たとえば hello という名前のシェルスク...
Hello! ← 実行結果。
-- ヒント: echo
+ コマンド引数で指定したディレクトリに、C言語のソースファ...
-- 実行例
$ ./findc prog ← prog というディレクトリを調べる。
prog/test1.c ← 実行結果。見付かったファイルが列挙され...
prog/test2.c
prog/test3.c
-- ヒント: find, 引数の取り出し($1)
+ キーボードからの入力を求め、それが「L」だったら「LEFT」...
-- 実行例
$ ./asklr ← シェルスクリプトの実行。
Input L or R ? ← 「L」か「R」を入力するように要求してく...
R ← ユーザが「R」と入力。
RIGHT ← 結果表示。
-- ヒント: read, if
+ コマンドの引数で与えられた複数の文字列をたてに表示する...
-- 実行例
$ ./vecho yamada takeuchi nakamura shiozawa gogo!
yamada
takeuchi
nakamura
shiozawa
gogo!
-- ヒント: for, 引数の取り出し($*)
【問5】 以下のような動作をするシェルスクリプトを作成しな...
+ コマンド引数で与えられたファイルを、誰からも読めなくす...
-- 実行例
$ ./secret himitsu.txt
+ C言語のソースファイル(拡張子が .c のファイル)を全部つ...
-- 実行例(リダイレクト(>)が不要にしてもよい)
$ ./cmerge > cfiles.txt
+ 「Hello!」と表示するシェルスクリプトを改良して、自分の...
-- 実行例
$ ./hi
Hi! My name is a01.cad.eng.tamagawa.ac.jp.
+ ユーザが「stop」と入力するまで、時刻を表示し続けるシェ...
-- 実行例
$ ./dateloop ← シェルスクリプト...
2005年 5月 11日 水曜日 11:44:01 JST ← 時刻を表示して入...
← ただ [Enter] を...
2005年 5月 11日 水曜日 11:44:05 JST
aaaa ← 適当な文字や、
2005年 5月 11日 水曜日 11:44:36 JST
123 ← 適当な数字を入れ...
2005年 5月 11日 水曜日 11:44:40 JST
stop ← 「stop」と入力す...
+ コマンドラインで指定した月(複数)のカレンダを表示する...
-- 実行例
$ ./mcal 4 5 ←コマンドの入力。4月と5月を指定。
April 2005 ←以下、結果出力。4月と5月のカレン...
Su Mo Tu We Th Fr Sa
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
May 2005
Su Mo Tu We Th Fr Sa
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
** 参考資料 [#r3b40a57]
- http://www.tokaido.co.jp/syoko/handyman/contents.html
- http://www.wakhok.ac.jp/~maruyama/Unix92/Unix92.html
- http://www.mita.cc.keio.ac.jp/manual/unix/UNIX.html
- http://www.ep.sci.hokudai.ac.jp/~inex/y2004/1029/jitsug...
- http://www.mlab.im.dendai.ac.jp/~tobe/xp-2/linux3.html
- http://warp.syns.net/10/
- http://www.stackasterisk.jp/tech/systemManagement/bash0...
- http://www.ybi.co.jp/koike/src/BSH.htm
- http://www.atmarkit.co.jp/flinux/rensai/theory08/theory...
- http://www.elect.chuo-u.ac.jp/tsuki/~tsun/lang/sh/
- http://www.ep.sci.hokudai.ac.jp/~inex/y2002/1101/1101_s...
以上
ページ名: