Linux リテラシ 2006
第3回 エディタ、シェル
Faculty of Computer and Information Sciences,
Hosei University
Resource Administration Team
CIS RAT
1
Table of Contents
 テキスト処理


エディタを起動する
モード
 シェル






bash
リダイレクト
パイプ
グロブ
エイリアス
シェルスクリプト
CIS RAT
2
テキスト処理
Linuxでテキストを処理するエディタ
 vi
 emacs
 その他
ほとんどの設定はテキストで行う
 テキストエディタの習得が必須
CIS RAT
3
vi
代表的なテキストエディタ
 シンプルながら多彩な機能を持つ
 ほとんどのLinux環境で使用できる
 コマンドがちょっと複雑
Windowsでいう「メモ帳 (notepad)」
CIS RAT
4
エディタ (vi) を起動する
「vi ファイル名」でエディタを起動できる
 sample.txt
というファイルを開く
$ vi sample.txt
 存在しないファイル名を指定した場合、
新規作成される
CIS RAT
5
vi のモード
ノーマルモード
 ファイルや文字列の編集を行うためのモード
 コピー
 保存
& ペースト
 など
挿入モード
 文字を入力するためのモード
vi 起動直後は「ノーマルモード」
CIS RAT
6
挿入モード
文字を入力するためのモード
ノーマルモードから「i」と入力
 左下に「--
挿入 --」とモード表示
自由にテキストを入力できる
CIS RAT
7
挿入モードの例 (1)
「i」と入力
CIS RAT
8
挿入モードの例 (2)
好きに書ける
CIS RAT
9
ノーマルモード
テキストの編集を行うためのモード
挿入モードから「Esc」キーを入力
 左下の「--
挿入 --」が消える
様々なコマンドを入力できる
CIS RAT
10
ノーマルモードへの移行
「Esc」キーを入力
CIS RAT
11
カーソルの移動
カーソルを移動する (ノーマルモード)
 上へ移動:
「↑」 または 「k」キー
 下へ移動: 「↓」 または 「j」キー
 左へ移動: 「←」 または 「h」キー
 右へ移動: 「→」 または 「l」キー
古いシステムでは「↑↓←→」は使えない
H
J
CIS RAT
K
L
12
カット
&
ペースト
カーソル位置を削除
:
カーソル位置を一行削除 :
カーソル位置を一行コピー :
貼り付け
:
[x]
[dd]
[yy]
[p]
vi は「削除 = 切り取り」
削除、コピーしたものは[ p ]で貼り付けられる
CIS RAT
13
やり直し
手前の操作を取り消す
[ u ]
CIS RAT
14
検索
/検索したい文字列
 処理中のテキストから文字列を探す
(下方向)
検索中に [ n ] : 下方向に再度検索
検索中に [ N ] : 上方向に再度検索
CIS RAT
15
保存と終了
現在の内容を保存する (write)
[
:w ]
保存してviを終了する (write and quit)
[
:wq ]
保存しないでviを終了する
[
:q! ]
CIS RAT
16
vi まとめ
コマンドラインから「vi ファイル名」で起動
 起動時はノーマルモード
ノーマルモードから「i」で挿入モードへ
 挿入モードでは文字を自由に書ける
挿入モードから「Esc」でノーマルモードへ
[
:wq ] で保存して終了
 [ :q! ] で保存しないで終了
CIS RAT
17
シェル
今までにコマンドを入力してた画面
Linuxの複雑な制御を簡単なコマンドで操作す
る「殻(= shell)」の役割
シェルにも色々ある
 bash
 tcsh
 zsh
 など
CIS RAT
18
bash
皆さんの環境で標準的に使われるシェル
オートコンプリートが便利
 途中まで入力して
[Tab]キーを押す
例えば
$ unz[TAB]
$ unzip
unz まで入力後
Tabキーを押す
unzipになる
CIS RAT
19
標準入出力
プログラムは標準入力と標準出力がある
 通常は「キーボードから入力」→標準入力
 通常は「画面へ出力」→標準出力
これまで「出力」と書いていたのは
「標準出力へ書き出す」を意味している
CIS RAT
20
標準入出力のイメージ
 例えば
$ echo Hello, world!
echoは「引数に書かれた文字列を標準出力へ出力」
CIS RAT
21
$ echo Hello, world!
 引数を画面上に表示

Hello, world と画面に表示される
CIS RAT
22
リダイレクト(1)
標準出力先をファイルに変更する
 通常は画面に出力
コマンド名 > リダイレクト先ファイル
例えば
$ echo Hello, world > hello.txt
CIS RAT
23
$ echo … > hello.txt
$ echo Hello, world > hello.txt
“Hello, world”
リダイレクト
hello.txt
echo
 “Hello, world” と書き込まれた hello.txt が完成

画面には何も表示されない
CIS RAT
24
リダイレクト (2)
$ echo Hello, world > hello.txt
$ echo Hello, world > hello.txt
と2回入力しても、1回分しか残っていない
 リダイレクト先に指定すると、毎回消去される
そんなときは「追記モード」のリダイレクト
コマンド名 >> リダイレクト先ファイル
 ファイルの最後から書き込み始める
CIS RAT
25
追記モード
$ echo Hello3 > hello.txt
$ echo Hello2 >> hello.txt
$ echo Hello1 >> hello.txt
$ cat hello.txt
Hello3
> ではなく >>
Hello2
Hello1
3行すべて
表示される
CIS RAT
26
リダイレクト (3)
ファイルを標準入力として使える
 通常はキーボード
コマンド名 < リダイレクト元ファイル
例えば
$ sort < hello.txt
sortは「標準入力を読んで順番に並べて表示」
CIS RAT
27
$ sort < hello.txt
こんなファイルも
リダイレクトすれば
並び替えて表示
$ cat hello.txt
Hello3
Hello2
Hello1
$ sort < hello.txt
Hello1
Hello2
Hello3
CIS RAT
28
パイプ
あるコマンドの標準出力を
次のコマンドの標準入力に流す
コマンド1 | コマンド2
 コマンド1の出力を、コマンド2の入力へ流す
例えば
$ echo Hello, world | rev
revは「標準入力を読んで逆順に表示」
CIS RAT
29
$ echo Hello, world! | rev
Hello, world
dlrow ,olleH
echo 標準入力
rev 標準出力
echo
echo
標準出力
rev
rev
標準入力
 echo した文字列が逆順に出力される
CIS RAT
30
パイプのイメージ
コマンド1 | コマンド2
CIS RAT
31
複雑な入出力
$ echo Hello, world > input
$ cat input | rev | rev > output
$ cat output
パイプやリダイレクトは組み合わせられる
なにが画面に表示される?
CIS RAT
32
グロブ
シェルが特殊記号を解釈し、該当するファイル
名に展開する
abc* – “abc”から始まる全てのファイル名
 *
は全ての文字列
abc? – “abc”から始まり4文字のファイル名

? は何か1文字
CIS RAT
33
グロブの例
abc*
○ abcdefg : * → defg
 ○ abc
: * は0文字でもよい
 × abdaaaa : abc が先頭に来ない

abc?
○ abcd
 × abc
 × abcde

:?→d
: ? は0文字になれない
: ? は de になれない
CIS RAT
34
エイリアス (別名)
コマンドに別名を付ける
 頻繁に使うコマンドを短く書ける
alias 別名='コマンド'
例えば
$ alias la='ls -a'
ls -a というコマンド(+引数)にlaという別名
CIS RAT
35
エイリアスの使用
エイリアスコマンドは、通常コマンドと同じように
扱える
例えば
$ la
先ほど定義したので、 ls -a と同じ
CIS RAT
36
エイリアス関係のコマンド
現在定義しているエイリアスを確認
 alias
 引数なし
定義しているエイリアスを取り消す
 unalias
別名
CIS RAT
37
シェルスクリプト
 ファイルにコマンド列を書いて、そのファイルを実行する
 書かれたコマンド列を順番に実行してくれる
 複雑な操作を繰り返し行う場合などに便利
今まで使ってきたコマンドをファイルに書けばよい
CIS RAT
38
シェルスクリプト [ex.sh]
ex.sh という名前のシェルスクリプトを作る
*.sh という名前にするのが慣例
まずはテキストエディタで ex.sh を開く
$ vi ex.sh
CIS RAT
39
シェルスクリプト [ex.sh]
viで下記の内容のテキストを作成
[
i ] で挿入モードへ
 下記の内容を記述する
 [ Esc ] でノーマルモードへ戻る
 [ :wq ] で保存して終了
#!/bin/sh
#comment
echo sample shell script
CIS RAT
41
シェルスクリプト [ex.sh] (続き)
vi を終了したら、シェルスクリプトを動かす
そのままでは動かない
 アクセス権限のうち「実行権限」が必要
「./シェルスクリプト名」で実行できる
$ chmod a+x ex.sh
$ ./ex.sh
sample shell script
CIS RAT
42
シェルスクリプトの解説
#!/bin/sh
#comment
echo …
 一行目

シェルスクリプトであることを表す「おまじない」
 二行目

# から始まる行は「コメント」として無視される
 三行目

echo "…" を実行する
CIS RAT
43
シェルのまとめ
コマンドを打ち込んでいる環境が「シェル」
リダイレクトで出力結果をファイルに保存
パイプでコマンドとコマンドを接続
グロブで複数のファイル名を指定
エイリアスでコマンド入力を簡単に
シェルスクリプトで複雑な処理を簡単に
CIS RAT
44
演習問題
講義資料のURL
http://rat.cis.k.hosei.ac.jp/article/rat/linuxli
teracy/2006/editor_shell.html
演習問題のURL
http://rat.cis.k.hosei.ac.jp/article/rat/linuxli
teracy/2006/editor_shell_question.html
CIS RAT
45
ダウンロード

echo Hello, world > hello.txt