* 第3回 シェルとコマンド操作 [#hb749fbd]

** 目次 [#o7632a21]

#contents

** シェルの基本 [#id51bb33]

*** 参考になるページ [#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/jitsugi/shell.html
- http://www.mlab.im.dendai.ac.jp/~tobe/xp-2/linux3.html
- 検索エンジンで「UNIX入門」,「シェルコマンド入門」,「シェルコマンドの使い方」などで検索して下さい.

*** UNIXコマンド [#u3cb41b7]

ターミナルを開いて,次のいろいろなシェルコマンドを試して、その機能を調べてください。参考ページや,manコマンドで,どういう働きのコマンドであるかを調べて下さい.

- マニュアルの閲覧
-- man
-- 以下のようにタイプして実行してみよ。
 man man

- ディレクトリ操作
-- ls
-- pwd
-- cd
-- mkdir
-- rmdir

- ファイル操作
-- cp
-- rm
-- mv
-- ln
-- chmod

- テキストファイル操作
-- cat
-- more
-- head
-- tail
-- file

- データ処理と検索
-- wc
-- sort
-- uniq
-- grep

- プロセス操作
-- ps
-- kill

- その他のコマンド
-- date
-- cal
-- who
-- od
-- passwd
-- alias
-- history

*** 活用例:漢字コードの検査 [#a8840696]

fileコマンドでは漢字コードを調べることもできます。コンピュータで使われる漢字コードには複数種類あります.おもにJIS(じす), SJIS(しふとじす), EUC(いーゆーしー), Unicode(ゆにこーど)が使われています.Vine LinuxはJIS, SJIS, EUCを扱います.

+ 前回の課題で作ったファイルを、以下のコマンドで調べて下さい.
 file way2eng.text
すると結果にEUCのテキストだと出てくると思います.
+ EUCだと分かる名前に書き換えておきましょう
 mv way2eng.text way2eng.text.euc
+ その他いろいろなファイルの種類を調べてみてください。

*** 活用例:プロセス操作 [#m082a650]

psは現在稼働中のプロセス(プログラム)の状態を示し,killはそれを強制終了するコマンドです.psとkillの組み合わせを実験してみよう.

+ ターミナルウィンドウを二つ開けて下さい.片方で,
 ping www.tamagawa.ac.jp
とタイプして下さい.
+ 動き続けているpingはコントロールCでとめられるが,これをもう一つのターミナル
ウィンドウから止めてみよう.
+ もう一つのターミナルウィンドウから
 ps -a
コマンドをタイプして下さい.
+ このなかにpingというのがあるはずです.そのPID (プロセスID)を覚えて下さい.
+ pingのPIDがたとえば12345だったばあい
 kill 12345
とタイプしてみて下さい.pingは止まったでしょうか.

** シェルの機能 [#ff164fe3]

*** ワイルドカード [#k7155502]

シェルのコマンドラインでは、ファイル名を指定するときにワイルドカードが使えます。ワイルドカード「*」と「?」の意味について調べてください。

*** リダイレクトとパイプ [#c49409a9]

シェルコマンドは「|」(縦棒)で接続し、前のコマンドの出力を次のコマンドの入力に流し込むことができます.これをパイプと呼びます.たとえば,
 ls -l | more
とするとls -lの結果を止めてみることが出来ます.

また、リダイレクト「>」を用いると、コマンドの出力結果をファイルに書き出すことができます。たとえば,
 ls > tako
とすると,lsの結果をtakoというファイルに書き込んでくれます.逆に「<」を用いると、ファイルの内容をコマンドの入力にすることも出来ます。

*** 活用例:漢字コードの変換 [#y723118b]

nkfコマンドで漢字コードを変換してみましょう。

+ まず、以下のようにタイプして使い方を全部読んで下さい.(日本語です)
 man nkf
+ way2eng.text.eucのファイルをnkfで変換して,これのJIS版を作成してください。名前は、way2eng.text.jisとしてください。作り方は自分で工夫して下さい.
-- ヒント:リダイレクトを使います。
+ 同様にして、これのSJIS版 way2eng.text.sjisを作って下さい.
+ 以下のようにタイプして,それぞれのファイルの漢字コードを確認して下さい.
 file way2eng* 

なお、ターミナルはEUCとJISは表示できますが,SJISはだめのようです.間違ってSJISを表示しようとして,表示が乱れてしまったら,resetというコマンドを打って下さい
.

** 課題(シェルとコマンド) [#c49409a9]

以下のコマンドが、それぞれ何をしているのか調べ、説明をメールに詳細に書いて,アドレス「report@fig.ele.eng.tamagawa.ac.jp」まで提出してください。
- メールアドレスの「@」はコピーしないで、半角文字で打ち直すこと。

不明なコマンドはmanコマンドなどで調べて下さい。メール提出後、教員または教育補助員に報告して確認してもらい、OKをもらったら(だいたい正解していたら)次に進んでください。

 echo Hello! > hello.txt
++ echo の意味は何か?
++ > の意味は何か?
++ hello.txt とは何か?
++ この操作の意味は何か?

 date > date.txt
++ date の意味は何か?
++ この操作の意味は何か?

 cat hello.txt date.txt
++ cat の意味は何か?
++ この操作の意味は何か?

 ps -aux | more
++ ps の意味は何か?
++ そのオプション a, u, x のそれぞれの意味は何か?
++ | の意味は何か?
++ more の意味は何か?
++ この操作の意味は何か?

 ps -aux | grep root >> date.txt
++ grep の意味は何か?
++ root の意味は何か?
++ >> の意味は何か?
++ この操作の意味は何か?

 find /etc -name "*tab" -print
++ find の意味は何か?
++ /etc とは何か?
++ オプション -name の意味は何か?
++ "*tab" とはどういう意味か?
++ この操作の意味は何か?

 sort -t: -k2 -n /etc/passwd | head -10
++ sort の意味は何か?
++ オプション -t, -k, -n の意味はそれぞれ何か?
++ /etc/passwd とは何か?
++ head の意味は何か?
++ オプション -10 の意味は何か?
++ この操作の意味は何か?

 cat *.txt > goodbye.txt
++ cat の意味は何か?
++ *.txt とはどういう意味か?
++ この操作の意味は何か?

 ln -s goodbye.txt seeyou.txt
 cat seeyou.txt
++ ln の意味は何か?
++ オプション -s の意味は何か?
++ この操作の意味は何か?

 chmod 000 goodbye.txt
 cat goodbye.txt
 cat seeyou.txt
++ chmod の意味は何か?
++ 000の意味は何か?
++ この操作の意味は何か?

** 第2回レポート(シェル) [#v503dff0]

【問1】 以下のような操作を実現するシェルコマンドを示しなさい。

+ ホームディレクトリの下に、「jikken」というディレクトリを作成するシェルコマンド。
+ 「himitsu.txt」というファイルを、誰からも読めなくするシェルコマンド。
+ 現在コンピュータで動いているプロセスの一覧を、ユーザ名の順番で並べ替えるシェルコマンド。1画面ごとに表示させるのが好ましい。
+ ディレクトリ「/usr/man」とそのサブディレクトリの中から、「g」で始まるファイルをすべて探し出して列挙するシェルコマンド。数が多い場合には、1画面ごとに表示させるのが好ましい。
+ コマンド「du」を用いると、指定したディレクトリとそのサブディレクトリのディスクの使用量が分かる。「du」の出力を大きい順に並べ替えるシェルコマンドを示しなさい。これも、1画面ごとに表示させるのが好ましい。
-- du の使い方の例
 du /usr/lib

【問2】 次回にまわしたが、希望者はやってもいい。(第3回レポート【問1】)

【問3】 以下の言葉をすべて使って、シェルについて簡潔に説明する文章を作成しなさい。その際、用語集のような箇条書きではなくて、教科書のようにつながった文章で書くようになさい。

- シェル
- ボーンシェル
- csh
- ksh
- bash
- UNIX
- BSD
- GNU
- シェルスクリプト
- cmd.exe
- Windows
- コマンドプロンプト

以上

【提出期限】 
- 次回実験開始まで(開始後のものは受け付けない)。

【提出方法】 
- hi-shiozawa@adms.tamagawa.ac.jp に電子メールで提出(Linuxからでなくてもよい)。
-- メールアドレスの「@」はコピーしないで、半角文字で打ち直すこと。

【注意事項】
- この実験に限らず、レポートでは自分の名前を最初に書くこと。
- である調(「だ」「である」)を用い、ですます調(「です」「ます」)は用いないこと。

【PC演習室】
- 演習室のPCからも、Linuxに大学のサーバにログインして、Linuxを使うことができます。「Tera Term Pro」というソフトウェア(Windows用のtelnet)が入っているはずなので、それを探して演習室のサーバ x1.educ.tamagawa.ac.jp にログインしてください。Linuxが使えます。
- Cygwinというソフトを使うと、WindowsでもUNIXのシェルやコマンドが使えるようになります。
-- http://www.cygwin.com
-- http://www.sixnine.net/cygwin/
- 実験の時間中に終わらなかった場合には、途中経過を大学のメールサーバ(演習室のアカウント)に送ることができるはずです。そのやり方は、前回説明済みです。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS