シェル シェルスクリプト 最低限 vi
DESCRIPTION
INEX 第4回 / 最低限 UNIX(Linux) その3. シェル シェルスクリプト 最低限 vi. 山下 達也 (北大理・宇宙理学専攻) 20 10/05/07 ( 金 ). 目次. シェル シェルスクリプト vi ( ブイアイ ). シェル. シェルとは?. シェルはユーザとカーネルとの仲介役 カーネル [ 第3回 ] OS の中核となる部分 アプリケーションソフト・ハードの仲介役 シェルとは「殻」の意味. シェル. カーネル. リクエスト. 仲介. レスポンス. 仲介. ユーザ. シェルの役割. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/1.jpg)
シェルシェルシェルスクリプトシェルスクリプト
最低限最低限 vivi
山下 達也(北大理・宇宙理学専攻)
20 10/05/07 ( 金 )
INEX 第4回 /最低限 UNIX(Linux) その3
![Page 2: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/2.jpg)
目次目次
シェル シェルスクリプト vi ( ブイアイ )
![Page 3: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/3.jpg)
シェルシェル
![Page 4: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/4.jpg)
シェルとは?シェルとは?
シェルはユーザとカーネルとの仲介役 カーネル [ 第3回 ]
OS の中核となる部分 アプリケーションソフト・ハードの仲介役
シェルとは「殻」の意味
シェルシェル
カーネル
ユーザ
仲介リクエスト
レスポンス
仲介
![Page 5: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/5.jpg)
シェルの役割シェルの役割ユーザインターフェイス ( コマンド・イン
タプリタ )アプリケーションソフトの環境設定プログラミング言語
![Page 6: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/6.jpg)
ユーザインターフェースユーザインターフェースユーザとカーネルの橋渡し役
プロンプトの表示 ユーザからのコマンドを待ち受ける
コマンドの読み込み → 解釈 → 実行 この機能を「コマンド・インタプリタ」と呼ぶ
カーネルからの返答をユーザに返す
![Page 7: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/7.jpg)
ユーザインターフェースユーザインターフェース
シェルの動作例 : date コマンドでカーネルから日時を取得シェルはユーザからのコマンドを待ち受ける
Kterm ×hoge@joho:~$ hoge@joho:~$ OSOS
ユーザユーザ
Terminal ×hoge@joho:~$
カーネル カーネル
ユーザユーザ
プロンプトプロンプト(コマンド受け付け)(コマンド受け付け)
![Page 8: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/8.jpg)
ユーザインターフェースユーザインターフェース
シェルの動作例 : date コマンドでカーネルから日時を取得シェルは date コマンドを読み込み , 解釈し
てカーネルに渡す
Kterm ×hoge@joho:~$ hoge@joho:~$ OSOS
ユーザユーザ
Terminal ×hoge@joho:~$ hoge@joho:~$ date
今何時?今何時?
カーネル カーネル コマンド入力コマンド入力
ユーザユーザ
![Page 9: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/9.jpg)
シェルの動作例 : date コマンドでカーネルから日時を取得シェルはカーネルの機械語での応答を人間語
に解釈して返す
ユーザインターフェースユーザインターフェースKterm ×hoge@joho:~$ hoge@joho:~$ OSOS
ユーザユーザ
Kterm ×hoge@joho:~$ hoge@joho:~$ date OSOS
ユーザユーザ
今何時?今何時?Terminal ×hoge@joho:~$ hoge@joho:~$ date
Fri May 7 13:25:14 JST 2010
hoge@joho:~$
カーネル カーネル
1010101 1010101 0001001000100111001101100110
日時の表示日時の表示ユーザユーザ
![Page 10: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/10.jpg)
アプリケーションソフトの環境アプリケーションソフトの環境設定設定
アプリケーションソフト ( ブラウザ , メーラ , エディタ など ) で使用する環境を設定 ユーザ名 , ホームディレクトリ , 言語環
境 , ... 「環境変数」 に文字列を代入することで設定
例 : 言語環境 LANG=C ターミナル TERM=xterm 設定には export コマンドを使用
詳しくは実習編で !!
![Page 11: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/11.jpg)
プログラミング言語プログラミング言語シェルは条件分岐や繰り返しなどの制御機
能を持つシェルスクリプトファイル
一連の手続き ( コマンド ) を書き込んだファイル
実行すると一連の手続きが行われる拡張子を .sh とするのが慣習「シェルスクリプト」編で詳しく紹介
![Page 12: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/12.jpg)
Unix Unix 系 系 OS OS の代表的なの代表的なシェルシェル
sh, bash, csh, tcsh, ksh, zsh, …それぞれ異なる機能を持つユーザはシェルを選択可能
Windows や Mac にもシェルが存在 Windows: Explorer, コマンドプロンプト Mac OS : Finder
![Page 13: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/13.jpg)
bash bash の特徴の特徴 bash ・・・ Bourne Again Shell
Unix 系 OS のシェルの一種 , Linux での標準 ユーザの操作環境を向上させる機能が豊富 ( 機能
の詳細は実習編で !!) リダイレクト : 入出力先の指定 メタキャラクタ : 任意の文字列を指定する為の特殊文
字 ジョブ管理 : 実行したコマンドの管理 補完機能 : 長いファイル・コマンド名の補完など ヒストリ機能 : 過去に実行したコマンドを記録・表示 エイリアス : コマンド ( 群 ) に別名をつける 環境変数 , シェル変数 : 環境を設定する為の変数
![Page 14: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/14.jpg)
シェルスクリプシェルスクリプトト
![Page 15: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/15.jpg)
シェルスクリプトの目的シェルスクリプトの目的
単純な作業の繰り返しを自動処理させる 自分は楽をする 人為ミスを減らす
既存のコマンドの組み合わせで新しいコマンドを作る 例:ファイルのバックアップ
![Page 16: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/16.jpg)
シェルスクリプトの目的シェルスクリプトの目的
例:ファイルのバックアップ直接手でコマンドを打ってみる
$ date ‘+%Y-%m-%d’ 2010-05-07$ cp file.txt file_2010-05-07.txt$ ls file.txt file_2010-05-07.txt
現在の日付を表示現在の日付を表示
ファイルをコピー
手動で作成されたファイル
![Page 17: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/17.jpg)
シェルスクリプトの目的シェルスクリプトの目的
例:ファイルのバックアップシェルスクリプトを書いてみる
$ lv makebackup.sh
#!/bin/bashNICHI=`date ‘+%Y-%m-%d’`cp file.txt file_${NICHI}.txt
日付をシェル変数に代日付をシェル変数に代入入
ファイルをコピー
シェルスクリプトファイルの中身シェルスクリプトファイルの中身を見るを見るインタプリタ(解釈するコマンインタプリタ(解釈するコマンド)を指定ド)を指定
![Page 18: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/18.jpg)
シェルスクリプトの目的シェルスクリプトの目的
例:ファイルのバックアップシェルスクリプトを実行してみる
$ ./makebackup.sh
$ ls file.txt file_2010-05-07.txt makebackup.sh
シェルスクリプトシェルスクリプトファイルを実行ファイルを実行
シェルスクリプトによって自動的に作成されたファイル
![Page 19: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/19.jpg)
シェルスクリプト応用編シェルスクリプト応用編
シェル変数を利用して汎用性を持たせる 制御構造の活用
順次構造 判断構造 繰り返し構造 処理 処理 BB
処理 処理 AA
処理 処理 CC課題として実際に課題として実際に作成してもらいます作成してもらいます
![Page 20: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/20.jpg)
シェルスクリプト応用編シェルスクリプト応用編
シェル変数を利用して汎用性を持たせる 制御構造の活用
順次構造 判断構造
if, case
繰り返し構造
処理 処理 BB
処理 処理 AA
処理 処理 CC処理 処理 AA
YESYES
NONO
処理 処理 BB
条件条件
課題として実際に課題として実際に作成してもらいます作成してもらいます
![Page 21: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/21.jpg)
シェルスクリプト応用編シェルスクリプト応用編
シェル変数を利用して汎用性を持たせる 制御構造の活用
順次構造 判断構造 繰り返し構造
for, while
ループ開始ループ開始
処理処理 AA
ループ終了ループ終了
処理処理 BB
課題として実際に課題として実際に作成してもらいます作成してもらいます
![Page 22: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/22.jpg)
テキストエディテキストエディタタ vivi
![Page 23: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/23.jpg)
テキストエディタテキストエディタ テキストファイル [ 第 3回 ] を作成す
るためのアプリケーションソフト vi, emacs, nano などがある シェルスクリプトもテキストファイ
ルなので , vi などで編集
![Page 24: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/24.jpg)
vi (vi ( ブイアイブイアイ ) ) とはとは ?? vi = Visual extended editor テキスト作成の効率化の徹底的追求
修飾キーなしに単純な文字入力で操作が可能 但し操作方法が特徴的で , 慣れが必要
UNIX のコマンドも自由に呼び出せる一部のプログラマー , 研究者には人気らしい
![Page 25: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/25.jpg)
なぜ なぜ vi vi を使うかを使うか ??
トラブル時に利用する /できる可能性が最も高い vi が入っていない UNIX 系 OS はほとんど無
い !! システムへの負荷が小さく , 軽快 システム管理者にとっては必修のツール
![Page 26: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/26.jpg)
vi vi の操作の操作vi コマンドで起動vi の基本 : モード vi ではキー入力が 2 つの意味を持つ
コマンドモード キー入力 = 編集命令 ( 削除,改行 , 保存など )
挿入モード キー入力 = 文字入力
![Page 27: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/27.jpg)
vi vi の操作の操作シェルシェル
vi (vi ( コマンドモードコマンドモード ))
vi (vi (挿入モード挿入モード ))
a, A, i, I, o, O a, A, i, I, o, O キーキー
$ vi [filename]$ vi [filename]
ESC ESC キーキー
:wq, :q!:wq, :q!
![Page 28: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/28.jpg)
vi vi の操作の操作シェルシェル
vi (vi ( コマンドモードコマンドモード ))
vi (vi (挿入モード挿入モード ))
a, A, i, I, o, O a, A, i, I, o, O キーキー
$ vi [filename]$ vi [filename]
ESC ESC キーキー
:wq, :q!:wq, :q!
困ったら 困ったら ESC ESC キー でコマンドモードへキー でコマンドモードへ
![Page 29: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/29.jpg)
まとめまとめ シェル
ユーザとカーネルの橋渡し 実習で機能を体験 , 学習 . 今回は bash を使用 .
シェルスクリプト 単純な作業の繰り返しを自動処理 課題として実際に作成
vi システム管理者にとって必修のテキストエディタ シェルスクリプト作成に使用しつつ覚えよう !!
![Page 30: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/30.jpg)
参考文献・参考参考文献・参考 URLURLCameron Newham, Bill Rosenblatt 著 , 遠藤美代子 訳 , 1998: 入門 bash 第 2 版 , オライリージャパン , 341 pp.
Linda Lamb 著 , 福崎俊博 訳 , 1992: vi 入門 , アスキー出版局 , 206 pp.
zsh 公式サイトhttp://www.zsh.org/
![Page 31: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/31.jpg)
付録付録
![Page 32: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/32.jpg)
各シェルの概要各シェルの概要 (1)(1)sh (Bourne shell)
Steven Bourne 氏が考案した伝統的なシェルlenny では /bin/sh から /bin/bash にリンク
が貼られているbash (Bourne again shell)
本編参照
![Page 33: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/33.jpg)
各シェルの概要各シェルの概要 (2)(2)csh (C shell)
Bill Joy 氏が考案C 言語に類似した構文を持つ
tcsh (TENEX C Shell)csh を拡張させたもの
![Page 34: シェル シェルスクリプト 最低限 vi](https://reader035.vdocuments.mx/reader035/viewer/2022070403/568139b9550346895da15833/html5/thumbnails/34.jpg)
各シェルの概要各シェルの概要 (3)(3)ksh (Korn shell)
David Korn 氏が考案実行が高速2000 年以降 , オープンソース化
zsh (Z shell)補完機能などが充実機能のみならず付属マニュアルが充実
ssh (Secure shell)遠隔のマシンにログインする為のプログラム