Faculty of Computer and Information Sciences, Hosei University Resource Administration Team CIS RAT 1 Linux リテラシ 2006 第 3 回 エディタ、シェル
CIS RAT2 Table of Contents テキスト処理 エディタを起動する モード シェル bash リダイレクト パイプ グロブ エイリアス シェルスクリプト
CIS RAT3 テキスト処理 Linux でテキストを処理するエディタ vi emacs その他 ほとんどの設定はテキストで行う テキストエディタの習得が必須
CIS RAT4 vi 代表的なテキストエディタ シンプルながら多彩な機能を持つ ほとんどの Linux 環境で使用できる コマンドがちょっと複雑 Windows でいう「メモ帳 (notepad) 」
CIS RAT5 エディタ (vi) を起動する 「 vi ファイル名」でエディタを起動でき る sample.txt というファイルを開く 存在しないファイル名を指定した場合、 新規作成される $ vi sample.txt
CIS RAT6 vi のモード ノーマルモード ファイルや文字列の編集を行うためのモー ド コピー & ペースト 保存 など 挿入モード 文字を入力するためのモード vi 起動直後は「ノーマルモード」
CIS RAT7 挿入モード 文字を入力するためのモード ノーマルモードから「 i 」と入力 左下に「 -- 挿入 -- 」とモード表示 自由にテキストを入力できる
CIS RAT8 挿入モードの例 (1) 「 i 」と入 力
CIS RAT9 挿入モードの例 (2) 好きに書ける
CIS RAT10 ノーマルモード テキストの編集を行うためのモード 挿入モードから「 Esc 」キーを入力 左下の「 -- 挿入 -- 」が消える 様々なコマンドを入力できる
CIS RAT11 ノーマルモードへの移行 「 Esc 」キーを 入力
CIS RAT12 カーソルの移動 カーソルを移動する ( ノーマルモード ) 上へ移動: 「 ↑ 」 または 「 k 」キー 下へ移動: 「 ↓ 」 または 「 j 」キー 左へ移動: 「 ← 」 または 「 h 」キー 右へ移動: 「 → 」 または 「 l 」キー 古いシステムでは「 ↑↓←→ 」は使えない HJKL
CIS RAT13 カット & ペースト カーソル位置を削除 : [ x ] カーソル位置を一行削除 : [ d d ] カーソル位置を一行コピー : [ y y ] 貼り付け : [ p ] vi は「削除 = 切り取り」 削除、コピーしたものは [ p ] で貼り付け られる
CIS RAT14 やり直し 手前の操作を取り消す [ u ]
CIS RAT15 検索 / 検索したい文字列 処理中のテキストから文字列を探す ( 下方 向 ) 検索中に [ n ] : 下方向に再度検索 検索中に [ N ] : 上方向に再度検索
CIS RAT16 保存と終了 現在の内容を保存する (write) [ :w ] 保存して vi を終了する (write and quit) [ :wq ] 保存しないで vi を終了する [ :q! ]
CIS RAT17 vi まとめ コマンドラインから「 vi ファイル名」で 起動 起動時はノーマルモード ノーマルモードから「 i 」で挿入モードへ 挿入モードでは文字を自由に書ける 挿入モードから「 Esc 」でノーマルモー ドへ [ :wq ] で保存して終了 [ :q! ] で保存しないで終了
CIS RAT18 シェル 今までにコマンドを入力してた画面 Linux の複雑な制御を簡単なコマンドで操 作する「殻 (= shell) 」の役割 シェルにも色々ある bash tcsh zsh など
CIS RAT19 bash 皆さんの環境で標準的に使われるシェル オートコンプリートが便利 途中まで入力して [Tab] キーを押す 例えば $ unz[TAB]$ unzip unz まで入力後 Tab キーを押す unz ip になる
CIS RAT20 標準入出力 プログラムは標準入力と標準出力がある 通常は「キーボードから入力」 → 標準入力 通常は「画面へ出力」 → 標準出力 これまで「出力」と書いていたのは 「標準出力へ書き出す」を意味している
CIS RAT21 標準入出力のイメージ 例えば echo は「引数に書かれた文字列を標準出力へ出力」 $ echo Hello, world!
CIS RAT22 $ echo Hello, world! 引数を画面上に表示 Hello, world と画面に表示される
CIS RAT23 リダイレクト (1) 標準出力先をファイルに変更する 通常は画面に出力 コマンド名 > リダイレクト先ファイル 例えば $ echo Hello, world > hello.txt
CIS RAT24 $ echo … > hello.txt “Hello, world” と書き込まれた hello.txt が 完成 画面には何も表示されない
CIS RAT25 リダイレクト (2) と 2 回入力しても、 1 回分しか残っていな い リダイレクト先に指定すると、毎回消去さ れる そんなときは「追記モード」のリダイレ クト コマンド名 >> リダイレクト先ファイル ファイルの最後から書き込み始める $ echo Hello, world > hello.txt
CIS RAT26 追記モード $ echo Hello3 > hello.txt $ echo Hello2 >> hello.txt $ echo Hello1 >> hello.txt $ cat hello.txt Hello3 Hello2 Hello1 > ではなく >> 3 行すべて 表示され る
CIS RAT27 リダイレクト (3) ファイルを標準入力として使える 通常はキーボード コマンド名 < リダイレクト元ファイル 例えば sort は「標準入力を読んで順番に並べて表 示」 $ sort < hello.txt
CIS RAT28 $ sort < hello.txt $ cat hello.txt Hello3 Hello2 Hello1 $ sort < hello.txt Hello1 Hello2 Hello3 こんなファイル も リダイレクトす れば 並び替えて表示
CIS RAT29 パイプ あるコマンドの標準出力を 次のコマンドの標準入力に流す コマンド 1 | コマンド 2 コマンド 1 の出力を、コマンド 2 の入力へ流 す 例えば rev は「標準入力を読んで逆順に表示」 $ echo Hello, world | rev
CIS RAT30 $ echo Hello, world! | rev echo した文字列が逆順に出力される
CIS RAT31 パイプのイメージ コマンド 1 | コマンド 2
CIS RAT32 複雑な入出力 パイプやリダイレクトは組み合わせられ る なにが画面に表示される? $ echo Hello, world > input $ cat input | rev | rev > output $ cat output
CIS RAT33 グロブ シェルが特殊記号を解釈し、該当する ファイル名に展開する abc * – “abc” から始まる全てのファイル 名 * は全ての文字列 abc? – “abc” から始まり 4 文字のファイル 名 ? は何か 1 文字
CIS RAT34 グロブの例 abc * ○ abcdefg: * → defg ○ abc: * は 0 文字でもよい × abdaaaa: abc が先頭に来ない abc? ○ abcd: ? → d × abc: ? は 0 文字になれない × abcde: ? は de になれない
CIS RAT35 エイリアス ( 別名 ) コマンドに別名を付ける 頻繁に使うコマンドを短く書ける alias 別名 =' コマンド ' 例えば ls -a というコマンド (+ 引数 ) に la という 別名 $ alias la='ls -a'
CIS RAT36 エイリアスの使用 エイリアスコマンドは、通常コマンドと 同じように扱える 例えば 先ほど定義したので、 ls -a と同じ $ la
CIS RAT37 エイリアス関係のコマンド 現在定義しているエイリアスを確認 alias 引数なし 定義しているエイリアスを取り消す unalias 別名
CIS RAT38 シェルスクリプト ファイルにコマンド列を書いて、そのファイル を実行する 書かれたコマンド列を順番に実行してくれ る 複雑な操作を繰り返し行う場合などに便利 今まで使ってきたコマンドをファイルに 書けばよい
CIS RAT39 シェルスクリプト [ex.sh] ex.sh という名前のシェルスクリプトを 作る *.sh という名前にするのが慣例 まずはテキストエディタで ex.sh を開く $ vi ex.sh
CIS RAT40 vi まとめ ( 再 ) コマンドラインから「 vi ファイル名」で 起動 起動時はノーマルモード ノーマルモードから「 i 」で挿入モードへ 挿入モードでは文字を自由に書ける 挿入モードから「 Esc 」でノーマルモー ドへ [ :wq ] で保存して終了 [ :q! ] で保存しないで終了
CIS RAT41 シェルスクリプト [ex.sh] vi で下記の内容のテキストを作成 [ i ] で挿入モードへ 下記の内容を記述する [ Esc ] でノーマルモードへ戻る [ :wq ] で保存して終了 #!/bin/sh #comment echo sample shell script
CIS RAT42 シェルスクリプト [ex.sh] ( 続き ) vi を終了したら、シェルスクリプトを動 かす そのままでは動かない アクセス権限のうち「実行権限」が必要 「./ シェルスクリプト名」で実行できる $ chmod a+x ex.sh $./ex.sh sample shell script
CIS RAT43 シェルスクリプトの解説 一行目 シェルスクリプトであることを表す「おまじない」 二行目 # から始まる行は「コメント」として無視される 三行目 echo "…" を実行する #!/bin/sh #comment echo …
CIS RAT44 シェルのまとめ コマンドを打ち込んでいる環境が「シェ ル」 リダイレクトで出力結果をファイルに保 存 パイプでコマンドとコマンドを接続 グロブで複数のファイル名を指定 エイリアスでコマンド入力を簡単に シェルスクリプトで複雑な処理を簡単に
CIS RAT45 演習問題 講義資料の URL teracy/2006/editor_shell.html 演習問題の URL teracy/2006/editor_shell_question.html