UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . ....

49
UNIX(Linux) 入門 農林水産研究情報総合センター Ver. 2019/01/10

Transcript of UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . ....

Page 1: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

UNIX(Linux) 入門

農林水産研究情報総合センター

Ver. 2019/01/10

Page 2: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

目次

1. 予備知識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.1. UNIXとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.2. Linuxとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.3. 一般ユーザとスーパーユーザ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.4. UNIX(Linux)のユーザインターフェース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.4.1. ウィンドウシステム(GUI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

1.4.2. コマンドライン操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2

1.5. ログインとログアウト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2

1.5.1. ログイン(login) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2

1.5.2. ログアウト(logout) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  3

2. コマンドライン操作の基本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  3

2.1. シェル(shell). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4

2.2. コマンドの書式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4

2.3. コマンドオプション. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  6

2.4. オンラインマニュアル(manコマンド) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7

2.5. コマンドラインの編集とヒストリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7

2.5.1. コマンドラインの編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7

2.5.2. ヒストリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  8

2.6. UNIX(Linux)でよく使うコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  8

3. UNIX(Linux)のディレクトリ構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11

3.1. ファイルシステム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11

3.1.1. ユーザの位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11

3.1.2. 絶対パスと相対パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12

3.2. ファイルの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12

3.2.1. テキストファイルとバイナリファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12

3.2.2. テキストの中身を表示する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12

3.2.3. ファイルの先頭や末尾を表示する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  14

4. ディレクトリ操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  15

4.1. カレントディレクトリの移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  15

4.2. ディレクトリを表す記号. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  15

4.2.1. ホームディレクトリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  15

4.2.2. 1つ上位のディレクトリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16

4.2.3. カレントディレクトリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16

4.2.4. 直前の作業ディレクトリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16

4.3. ディレクトリの作成と削除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17

4.3.1. ディレクトリの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17

4.3.2. ディレクトリの削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17

Page 3: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.4. ファイル属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18

4.4.1. 隠しファイル属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18

4.4.2. ディレクトリの属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18

5. ファイルのコピー、移動、削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18

5.1. ファイルのコピー cp(copy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18

5.1.1. ディレクトリを丸ごとコピー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19

5.1.2. ファイルの属性を保持してコピー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19

5.2. ファイルの移動 mv(move) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19

5.3. ファイルの削除 rm(remove). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19

6. ワイルドカード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20

6.1. 任意の文字列「*」. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20

6.2. 任意の1文字「?」 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20

6.3. 指定した文字のいずれかとマッチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20

7. 標準入出力とリダイレクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21

7.1. 標準入出力 STD I/O(Standard Input / Output) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21

7.2. リダイレクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21

7.2.1. 標準出力リダイレクション(>,>>) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21

7.2.2. 標準入力リダイレクション(<) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  22

7.2.3. 標準エラーのリダイレクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24

7.2.4. ファイルディスクリプタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24

7.3. パイプ (コマンドを接続する) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24

8. テキストエディタ vi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25

8.1. ファイルのオープン (起動) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26

8.2. ファイルのセーブと終了. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26

8.3. 基本的な編集操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26

8.3.1. カーソルを移動する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26

8.3.2. 文字を入力する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27

8.4. テキスト削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27

8.5. vimチュートリアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27

8.6. vim関連情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28

8.6.1. vimの日本語文字コード自動判別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28

9. ネットワークの利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  30

9.1. リモートログイン SSH (Secure Shell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  30

9.2. ファイル転送 scp, sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31

9.2.1. scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31

9.2.2. sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32

10. シェルスクリプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33

10.1. シェルスクリプトの書き方と実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33

10.1.1. シェルスクリプトの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34

10.1.2. コメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35

Page 4: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

10.2. 変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  36

10.2.1. シェル変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  36

10.2.2. 環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  36

10.3. 引数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37

10.3.1. 位置パラメータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37

10.3.2. 引数の数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37

10.4. サンプルスクリプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37

10.4.1. ヒアドキュメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39

10.4.2. コマンド中の改行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39

10.4.3. 実行結果のグラフ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40

10.5. 参考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40

10.5.1. インターネット上の情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40

10.5.2. 書籍等 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  41

11. プログラムの利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  41

11.1. コンパイラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  41

11.2. プログラム作成と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  42

11.3. Cプログラムの作成と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43

11.3.1. ソースコードの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43

11.3.2. コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43

11.3.3. 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43

11.4. Fortranプログラムの作成と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44

11.4.1. ソースコードの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44

11.4.2. コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44

11.4.3. 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44

Page 5: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1. 予備知識

1.1. UNIXとは

UNIXは、アメリカAT&T社のベル研究所で開発された、マルチタスク、マルチユーザ機能を有するOS(オ

ペレーティングシステム)の一種です。また、後にカリフォルニア大学バークレー校で実装されたUNIX

(BSD)などと共に、これらから派生したOSの総称です。

1.2. Linuxとは

1991年にリーナス・トーバルズ氏がLinuxカーネルを開発しました。このLinuxカーネルはPOSIXに準拠

し、GPLライセンスが採用されたことで、フリーのUNIXクローン(UNIX互換OS)として利用されるように

なりました。

• kernel: OSの基本機能を実装したソフトウェア。

• POSIX(Portable Operations System Interface:ポジックス): は、UNIXなど各

種OSに共通のアプリケーションインターフェースを規定し、移植性の高いアプ

リケーション開発を容易にする目的でIEEEが策定した規格。

• GPL(GNU General Public License): GPLは、概ねプログラムの実行、改変、再

頒布などを許諾するライセンスで、派生的プログラム(著作物)もGPLが適用され

る。プログラム改変を許諾するためにソースコードの公開が前提となる。

1.3. 一般ユーザとスーパーユーザ

UNIX(Linux)のユーザには、システム上であらゆる操作が可能な権限(管理者権限)を持つスーパーユーザ

(root)と、権限(できること)が制限された一般ユーザがあります。

通常のシステム利用には、一般ユーザで作業を行います。 スーパーユーザは、システムの設定を変更し

たりすることが可能であり、ミスなどによってシステムを破壊する場合もあるため、システム管理者がシ

ステムに対する操作を行う場合のみに使用します。

1.4. UNIX(Linux)のユーザインターフェース

1.4.1. ウィンドウシステム(GUI)

UNIXやLinuxで使われているウィンドウシステム(GUI)は、X Window Systemという仕組みを使ってい

ます。

最近のLinuxディストリビューションでは、デスクトップの外観や操作性を提供する「ウィンドウマネー

ジャ」というソフトウェアを組み合わせて、WindowsやMacと同じようにGUI操作で多くの作業ができ

る環境が提供されています。

UNIX(Linux) 入門 1. 予備知識

1

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 6: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

• Linuxディストリビューション: LinuxカーネルとWebブラウザやメールソフト

などのアプリケーションソフトや、それらを動かすための周辺ソフトウェアを組

み合わせた配布パッケージで、多くのディストリビューションがある。(RedHat,

Debian GNU/Linux, SUSE, Ubuntu, CentOS, Fedora, Vine, KNOPPIX…..)

• GNOME, KDEが代表的な総合デスクトップ環境

1.4.2. コマンドライン操作

キーボードから文字によるコマンドで操作します。 コマンド操作を行うには、端末(ターミナルエミュ

レータ、仮想端末)を使います。

パソコンのLinux環境であれば、GNOME端末などを起動すれば、コマンド操作が可能となります。 ネッ

トワークを経由してサーバに接続する場合は、パソコン上のターミナルエミュレータソフト(PuTTY, Tera

Termなど)から、SSH(Secure Shell)で接続し、ログインした状態で、コマンド操作が可能となります。

PuTTY, Tera Term: Windows用のターミナルエミュレータソフトウェアで、SSH(SSH

Ver.2対応)でのリモート接続ができる。

起動した端末、あるいはサーバにログインした端末で、カーソルが表示されている状態を「コマンドプロ

ンプト」、「プロンプト」と呼び、現在コマンドを受け付けられる状態であることをユーザに示していま

す。

[norin@fe02 ~]$ ■

システムによってプロンプトは異なりますが、ユーザ名、ホスト名、現在のディレクトリ、一般ユーザ

($)かroot(#)か、といった情報が表示されています。

「 ~ 」(チルダ)の部分が現在のディレクトリで、「 ~ 」は「ホームディレクトリ」(/home/login-id)を表

しています。

科学技術計算システムのコンパイルサーバのプロンプトは、 norin@fe02 $ (ユーザ名、

ホスト名)となっています。

1.5. ログインとログアウト

1.5.1. ログイン(login)

コンソールやネットワーク(SSH)を経由してUNIXのコマンド操作を行える状態になることをログイン

(login)といいます。 このときに利用者毎に登録されているログインID(ログイン名、ユーザ名) とパス

ワードによって認証を行います。

UNIX(Linux) 入門 1.5. ログインとログアウト

2

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 7: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

ログイン名、ユーザ名(login name, login-id, user name)

システムに登録されたユーザを識別する名前です。

SSH接続

SSH(Secure Shell)は、ネットワークを経由して別のコンピュータにログインしたり、コマンドを

実行するためのプログラムで、ネットワーク上を流れるデータは暗号化されるため、安全に操作す

ることができます。

Windows PCでは、PuTTYやTera Termなどで接続することができます。 MacやLinux環境からは、ssh

コマンドを使って接続します。

1.5.2. ログアウト(logout)

ログイン状態を解除する(シェルを終了する)ことをログアウト(logout)と言います。 SSHなどネットワー

クを経由している場合は、 接続も解除します。

ログアウトするには、`exit`コマンドを使います。 exitコマンドの代わりに、「Ctrl+D」(Ctrlキーを押

しながらdを押す)を使うことも可能です。

2. コマンドライン操作の基本

基本的なコマンドの実行は、以下の例の様にプロンプトからコマンドをタイプして「Enter」キーを押す

と、結果が表示されます。

$ pwd

/home/norin <- 実行結果

実行例などで、単に $ と記述した場合は一般ユーザのプロンプトの意味で、$を入力す

る必要はない。root権限の場合は # とする。

pwdコマンドの実行結果として表示された /home/norin は、今いる場所「カレントディレクトリ」

(current directory, working directory)を表示しています。(pwd: Print Working Directory)

$ ls

cow2b.sas sastest sx

lsコマンドは、ディレクトリの内容を一覧表示するコマンドです。何も指定せずに実行すると、カレント

ディレクトリにあるファイルやディレクトリが表示されます。

UNIX(Linux) 入門 2. コマンドライン操作の基本

3

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 8: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1. シェル(shell)

ユーザがタイプしたコマンドは、シェル(shell)というプログラムによって解釈され、実行されます。シ

ェルは、システムの中核プログラムのカーネルとユーザの間で、コマンドの解釈、結果の表示といったこ

とを行います。また、プログラミング(シェルスクリプト)言語としてシェルを利用する事もでき、自動実

行などに使われています。

利用者がログインすると自動的に起動するシェルを標準シェル(ログインシェル)と言います。多く

のLinuxディストリビューションで標準シェルとなっているのが「bash」ですが、システムによって、C

シェルなどが使われています。

• bash(/bin/bash)は、Bシェル(bourne shell, /bin/sh)を拡張したシェルです。ま

た、Cシェル(csh, /bin/csh)を拡張したtcshも使われています。最近のLinuxディ

ストリビューションでは、Bシェルをbashに、Cシェルをtcshに置き換えている

ことが多い。

• 科学技術計算システムでは、SUPER-UXなどで本来(拡張版でない)のCシェル、B

シェルが使われていますので、シェルスクリプト等で拡張された機能や書式が使

えない場合がありますので注意してください。

自分が使っているシェルを確認するには、「echo $SHELL」というコマンドを使います。

$ echo $SHELL

/bin/csh

表 1. 主なシェル

シェル 説明

sh Stephen R. Bourne氏による Bourneシェル(Bシェル)は、

UNIXシステムの標準となっている。シェルスクリプトの標準として使用されている。

bash shの上位互換シェルで、LinuxやMacの標準シェルとして使用されている。

csh カリフォルニア大学バークレイ校で開発されたシェルで、Cシェルと呼ばれている。

文法がC言語に似ている。

tch cshの機能拡張版で、Linuxなどで広く採用されている。

zsh Bシェル系の機能拡張版で、Cシェル系の機能も一部取り込まれた高機能シェルです。

2.2. コマンドの書式

コマンドの書式(入力形式)は、以下の様になります。

コマンド名 引数1 引数2 ・ ・ ・ ・ ・ ・

UNIX(Linux) 入門 2.1. シェル(shell)

4

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 9: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

引数(ひきすう)は、コマンドに引き渡す値のことで、引数の間は1つ以上のスペースで区切られ複数の値

を引き渡すことができます。

Windowsなどで作成した、ファイル名にスペースが入ったファイルを転送した場合

に、複数の引数と解釈されコマンドが正常に処理できない場合があります。

UNIX(Linux)では、コマンド、引数、ファイル名などで、大文字、小文字を区別します。 多くのコマン

ドは、小文字になっています。

コマンドによって引数の値や順番などが違います。

引数の指定例として、cal(calendar)コマンドで引数なし、引数1(2017)、引数1(6)と引数2(1990)を指定し

た場合の出力を以下に示します。

リスト 1. 引数なし(今月のカレンダー)

$ cal

  January 2017

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

リスト 2. 引数1を指定(2017年のカレンダー)

$ cal 2017

  2017

  January February March

Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa

 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4

 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11

15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18

22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25

29 30 31 26 27 28 26 27 28 29 30 31

  April May June

Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa

  1 1 2 3 4 5 6 1 2 3

 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10

 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17

16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24

23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30

30

UNIX(Linux) 入門 2.2. コマンドの書式

5

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 10: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

リスト 3. 引数2を指定(1990年6月のカレンダー)

$ cal 6 1990

  June 1990

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

2.3. コマンドオプション

コマンドの動作を変更する指令を「オプション」といい、コマンドの引数として指定します。

多くのコマンドオプションは、「-a」のようにハイフン「-`」に続きアルファベットで指定します。 コ

マンドオプションのアルファベットは、大文字、小文字を区別します。 例えば、ls コマンドで更新日時

の順に表示するには、「-t」オプションをつけたり、詳細な情報を表示する「-l」オプションを付けたり

します。 また、複数のオプションを続けて「ls -lt」のように指定することもできます。

$ ls

  cow2b.sas SAS-BI sasuser.v92 sx

$ ls -t

  sx sasuser.v92 SAS-BI cow2b.sas

$ ls -lt

total 12

  lrwxrwxrwx 1 hat center 7 Jun 26 10:41 sx -> /sx/hat

  drwxr-xr-x 2 hat center 4096 Jun 26 08:42 sasuser.v92

  drwxr-xr-x 2 hat center 4096 Jun 17 19:07 SAS-BI

「-アルファベット」のような指定方法の他に、「--」ハイフン2つに続けて英単語で指定するオプション

もあります。

先ほどのlsコマンドで更新日時順と詳細な情報を表示するオプションは以下の様になります。

$ ls --sort=time --format=long

total 12

  lrwxrwxrwx 1 hat center 7 Jun 26 10:41 sx -> /sx/hat

  drwxr-xr-x 2 hat center 4096 Jun 26 08:42 sasuser.v92

  drwxr-xr-x 2 hat center 4096 Jun 17 19:07 SAS-BI

  -rw------- 1 hat center 3882 Feb 26 17:49 cow2b.sas

UNIX(Linux) 入門 2.3. コマンドオプション

6

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 11: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

科学技術計算システムで、フロントエンドサーバとコンパイルサーバでは、lsコマンド

の表示が違っています。 これはシステムによって標準で指定されたオプションが違っ

ているためです。 (`ls -F`や`ls --color=auto`などをお試しください)

2.4. オンラインマニュアル(manコマンド)

コマンドの利用方法やオプションを調べるために、「オンラインマニュアル」を参照することができま

す。

オンラインマニュアルを参照するには、コマンド manの引数にコマンド名を指定します。

$ man ls

LS(1) User Commands LS(1)

NAME

  ls - list directory contents

SYNOPSIS

  ls [OPTION]... [FILE]...

DESCRIPTION

  List information about the FILEs (the current directory by default).

  Sort entries alphabetically if none of -cftuvSUX nor --sort.

  Mandatory arguments to long options are mandatory for short options

  too.

  -a, --all

  do not ignore entries starting with .

  -A, --almost-all

  do not list implied . and ..

  --author

 Manual page ls(1) line 1

マニュアルが長い場合は、1画面ごとに表示するページャ(lessなど)と呼ばれるプログラムによって表示さ

れます。 次のページを表示するには「スペースキー」を、前のページに戻るには「b」押します。 終了

するには、「q」を入力します。

2.5. コマンドラインの編集とヒストリー

2.5.1. コマンドラインの編集

コマンドオプションなど引数が多くなると、入力ミスなどが増えます。 Enterキーを押す前であればコマ

ンドは実行されませんので、コマンドラインの修正(編集)が可能です。

修正には、矢印キー(←→)やBS(Back Space), DEL(Delete)キーなどが使えます。 また、「Ctrl+A」(Ctrl

キーを押しながらA)などのコンビネーションキーによる操作(Ctrl+A: 行の先頭に移動))も可能です。

UNIX(Linux) 入門 2.4. オンラインマニュアル(manコマンド)

7

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 12: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.5.2. ヒストリー

シェル(bash, tcshなど)には、コマンドの履歴(ヒストリー)を記憶する機能があります。

上矢印キー「↑」を押すか「Ctrl+P」を押すと、コマンドを一つずつさかのぼって表示します。 下矢印

キー「↓」か「Ctrl+N」で一つずつ戻ります。

表示されたコマンドは、Enterキーを押すと実行されます。 また、編集することができますので、間違え

た箇所を修正したり、引数を少しずつ変更して実行することができます。

historyコマンドを使うと、これまで実行したコマンドを一覧表示することができます。表示したコマン

ドには、連番がついていますので、「!21」のように、番号を指定して再実行することができます。

表 2. コマンドラインのキー操作

キー操作 説明

Ctrl + F, → カーソルを一文字右に移動

Ctrl + B, ← カーソルを一文字左に移動

Ctrl + D, Delete カーソル位置の文字を削除

Ctrl + A カーソルを行の先頭に移動

Ctrl + E カーソルを行末に移動

Ctrl + K カーソル位置から行末までを削除

Ctrl + U 先頭からカーソル位置までを削除

Alt + F, Esc F カーソルを1単語右に移動

Alt + B, Esc B カーソルを1単語左に移動

Alt + D, Esc D カーソル位置から単語の終わりまでを削除

Ctrl + P, ↑ コマンドヒストリーを1つさかのぼって表示

Ctrl + N, ↓ さかのぼったヒストリーを1つ戻す

2.6. UNIX(Linux)でよく使うコマンド

以下に、UNIX(Linux)でよく使う主なコマンドを一覧にしました。 詳しくは、オンラインマニュアル

(man コマンド名)などを参照してください。

表 3. UNIX(Linux)で使う主なコマンド

機能 コマンド 利用法 使用例

ファイル操作 

ファイルのリスト表示  ls ls [ディレクトリ] ls -l, ls -lv

ファイルをコヒー cp cp [コピー元] [コピー先] cp -r, cp -rp

UNIX(Linux) 入門 2.6. UNIX(Linux)でよく使うコマンド

8

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 13: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

機能 コマンド 利用法 使用例

ファイルを削除 rm rm [ファイル名] rm -r

ファイル名を変更、移動 mv mv [元のファイル] [

変更(移動)先]

mv hoge work/

ディレクトリを作成 mkdir mkdir [ディレクトリ名] mkdir work

カレントディレクトリを変更

cd cd [ディレクトリ] cd work, cd .., cd

現在のワーキングディレクトリ

pwd pwd

ディレクトリを削除 rmdir rmdir [ディレクトリ名] rmdir work

ファイル検索 find find [ディレクトリ名]

[オプション]

find work/ -name hogehge

ファイルタイプを表示 file file [ファイル名] file /bin/bash, file .cshrc

テキスト操作

テキストファイルの内容を表示

cat cat [ファイル名] cat filename

テキストを位置画面ずつ表示

more(less) more(less) [ファイル名] less filename

ファイルの先頭を表示 head head [オプション]

[ファイル名]

head -30 file

ファイルの末尾を表示 tail tail [オプション]

[ファイル名]

tail -30 file, file -f file

パターンマッチ検索 grep grep [オプション]

[ファイル名]

grep [keyword] file, grep -v

[keyword] file

ソート sort sort [オプション]

[ファイル名]

sort file, sort -k 3 -n file

文字数カウント wc wc [オプション]

[ファイル名]

wc filename

アクセス権限

アクセス権限の変更 chmod chmod [オプション]

[ファイル名]

ファイルアーカイブ、圧縮

複数のファイルを一つに tar tar [オプション]

[アーカイブ先]

[アーカイブもと]

tar zcvf hoge.tar.gz dir/, tar zxvf

hoge.tar.gz

ファイルの圧縮、展開 gzip,

gunzip

gzip [圧縮するフィル],

gunzip

[解凍するファイル]

gzip hoge.txt, gunzip hoge.txt.gz

UNIX(Linux) 入門 2.6. UNIX(Linux)でよく使うコマンド

9

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 14: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

機能 コマンド 利用法 使用例

ファイルの圧縮、展開 bzip2,

bunzip2

bzip2 [

圧縮するファイル],

bunzip2

[解凍するファイル]

bzip2 hoge.txt, bunzip2 hoge.txt.bz2

圧縮されたファイルの内容を表示

zcat zcat

[圧縮されたファイル]

zcat hoge.txt.gz

各種情報の表示

オンラインマニュアル man man [コマンド名] man ls, man man

サーバの状況を表示 w w [オプション] w

サーバの状況を表示 top top [オプション] top

プロセス表示 ps ps [オプション]

ユーザの環境設定表示 env env

ディスクの使用状況表示 df df [オプション] df -k

ディスクの使用量表示 du du [オプション]

[ディレクトリ名]

du -s ./*

ディスクの容量制限表示 quota quota [オプション]

quota_stat

(科学技術計算システム

では、quota_statを使う)

現在の日時を表示 date date [オプション] date

カレンダー表示 cal cal [オプション]

[表示指定期日]

cal -3, cal -y

シェル環境

bashの起動 bash bash

aliasの設定、表示 alias alias [エイリアス名

]=’[コマンド [

オプション]]’

alias

aliasの解除 unalias unalias [コマンド]

環境変数設定 (csh) setenv setenv [環境変数]

[設定値]

setenv LANG C

環境変数設定 (sh,bash) export 変数名=設定値; export

[環境変数]

LANG=C; export LANG

コマンド履歴 history history

ネットワーク

SSH ログイン ssh(slogin) ssh -X

[email protected]

.jp

UNIX(Linux) 入門 2.6. UNIX(Linux)でよく使うコマンド

10

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 15: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

機能 コマンド 利用法 使用例

SCP ファイルコピー scp scp [コピー元] [

コピー先]

scp file.name

[email protected]:dirname/

SFTP ファイルコピー sftp sftp [ユーザ名

]@[接続先ホスト名]

sftp [email protected]

quota_stat: 科学技術計算システムでは、利用者のデータを格納したファイルサーバ上

でquotaコマンドを実行する必要があるため、別のコマンドを設定しています。

3. UNIX(Linux)のディレクトリ構造

3.1. ファイルシステム

ファイルを格納する入れ物をディレクトリと言います。 WindowsやMacintoshでフォルダと呼ばれてい

る物がディレクトリにあたります。

ディレクトリ自体もファイルと同様にディレクトリに格納できるので、UNIX(Linux)のファイルシステム

はツリー(木)構造となっています。

ツリーの頂点(木を逆さまにしたイメージで根にあたる部分)をルート(root)と呼び「/(スラッシュ)」で表

記します。

図 1. UNIXファイルシステムのイメージ

3.1.1. ユーザの位置

現在、ユーザがいるディレクトリのことをカレントディレクトリと呼びます。 `pwd`コマンドでカレン

トディレクトリを表示することができます。

ログインした時点では、ホームディレクトリと呼ばれる自分専用のディレクトリがカレントディレクトリ

となります。 ディレクトリを指定せずにファイルやディレクトリの操作(`ls`等コマンド操作)を行った場

UNIX(Linux) 入門 3. UNIX(Linux)のディレクトリ構造

11

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 16: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

合には、カレントディレクトリでの作業として処理が行われます。

3.1.2. 絶対パスと相対パス

ファイルやディレクトリまでの道筋のことを「パス」と呼びます。 このパスの指定方法には、「絶対パ

ス」と「相対パス」があります。 絶対パスは、ルート「/」からたどって指定する方法で、相対パスは、

カレントディレクトリを起点として指定する方法です。

pwdコマンドを実行すると、「/home/login-id」のように絶対パスで表示されます。 ディレクトリの区

切りも「/」が使われています。

「ls SAS-BI」のようにlsコマンドの引数が「/」で始まる絶対パスでない場合は、カレントディレクトリ

からの相対パスとして処理されます。

$ pwd

/home/hat

$ ls

cow2b.sas SAS-BI sasuser.v92 sx

$ ls SAS-BI

milk.sas7bdat systemcpu.sas7bdat

3.2. ファイルの表示

3.2.1. テキストファイルとバイナリファイル

テキストファイル(text file)は、文字や数字などの文字コードで構成され、人間が読んで理解できる形式

のデータ(シェルスクリプトやCSVデータなど)のファイルです。 テキストファイル(テキストデータ)は、

端末に表示したりテキストエディタで編集することができます。

これに対して、バイナリファイル(binary file)は、コンピュータが処理するために2進数で構成されたフ

ァイルで、人間がそのまま読んで理解することは困難です。

バイナリファイルには、画像、音声、圧縮されたファイルなどがあります。また、プログラム言語(C,

FORTRANなど)で書かれたソースコード(テキスト)に対して、コンパイル(コンピュータで実行可能な形式

に変換)されたプログラム(オブジェクトファイルや実行ファイル)をバイナリと呼ぶことがあります。

3.2.2. テキストの中身を表示する

単にテキストファイルの中身を表示するには、cat(concatenate) コマンドを使います。

cat 表示するファイルのハス

UNIX(Linux) 入門 3.2. ファイルの表示

12

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 17: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

catの逆にファイルの末尾から表示するtacコマンドや、行の文字を逆の並びで表示す

るrevコマンドもあります。

ファイルの最後まで表示しますので、長いファイルでは最後しか見ることができません。

hat@fe02 $ cat cow2b.sas

 中略

run;

proc reg data=cow;

  model bl=dayl day;

  data cow3;

set cow;

  bh=exp(3.26617)*day**(0.05858)*exp(-0.00307*day);

proc print;

  symbol1 interpol=join color=green;

  symbol2 interpol=join color=red;

proc gplot;

  plot b*day bh*day /overlay; run;

hat@fe02 $

長いファイルを画面毎にスクロール表示するには、lessコマンドを使います。

UNIX(Linux) 入門 3.2. ファイルの表示

13

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 18: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

hat@fe02 $ less cow2b.sas

data cow;

  input day a b;

  dayl=log(day);

  al=log(a);

  bl=log(b);

cards;

6 20.3 23.3

7 18.1 24.6

8 17.6 24

9 16.3 25.6

10 19.9 25.6

11 19.9 26.4

12 19.6 27.3

13 19.9 28.4

14 19.2 28.2

15 20.3 27.4

16 20.5 29.7

17 20.9 30.4

18 20.8 29.4

19 21.8 31.6

20 21.2 31.3

21 21.3 31.2

22 21.9 31.4

cow2b.sas

lessは、逆スクロールや対話的な文字検索なども可能な、moreコマンドの上位互換のツールです。 less

を終了するには q を押します。

lessを実行中に、hを押すとlessのヘルプが表示されます。

  SUMMARY OF LESS COMMANDS

  Commands marked with * may be preceded by a number, N.

  Notes in parentheses indicate the behavior if N is given.

h H Display this help.

q :q Q :Q ZZ Exit.

---------------------------------------------------------------------------

  MOVING

e ^E j ^N CR * Forward one line (or N lines).

y ^Y k ^K ^P * Backward one line (or N lines).

f ^F ^V SPACE * Forward one window (or N lines).

b ^B ESC-v * Backward one window (or N lines).

3.2.3. ファイルの先頭や末尾を表示する

沢山のテキストファイルの先頭だけを確認する場合など、ファイルの先頭の部分を表示するコマンドが

UNIX(Linux) 入門 3.2. ファイルの表示

14

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 19: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

head です。

ファイルの末尾を見るコマンドが tail です。 tail -f オプションを使うと、ログファイルなどの末尾に

追加された行を続けて表示することができます。

4. ディレクトリ操作

4.1. カレントディレクトリの移動

ログイン時の作業ディレクトリ(カレントディレクトリ)が、ホームディレクトリ(/home/login-id)です。

特定のディレクトリ配下のファイルに対して続けて作業(コマンド操作)を行う場合、ファイルが格納され

ているディレクトリに移動した方がパスの指定が簡単になります。

ディレクトリを移動するには `cd(change directory)`コマンドを使います。

$ cd 移動先のパス

SAS-BIディレクトリに移動するには、以下の様にします。

[hat@fe03 ~]$ cd SAS-BI

[hat@fe03 ~/SAS-BI]$ pwd

/home/hat/SAS-BI

ホームディレクトリに戻るには、cd /home/login-id のようにしても良いですが、引数無しで`cd` コマ

ンドを実行すると、ホームディレクトリに戻ることができます。

[hat@fe03 ~/SAS-BI]$ cd

[hat@fe03 ~]$ pwd

/home/hat

4.2. ディレクトリを表す記号

よく使うディレクトリを表す記号を使うとパスの指定が簡単になります。

4.2.1. ホームディレクトリ

コマンドプロンプトでも紹介しましたが、「~」(チルダ)はホームディレクトリを表しています。 どこか

のディレクトリで作業を行っている時に、ホームディレクトリ配下のディレクトリに移動したり、ファイ

ルにアクセスするときなどに使います。 (単にホームディレクトリに戻るだけなら、引数無しの `cd`コ

マンドで可能です。)

UNIX(Linux) 入門 4. ディレクトリ操作

15

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 20: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

例えば、`SAS-BI`ディレクトリから、ホームディレクトリ配下の`sx`ディレクトリに移動するには、

以下の様にします。

[hat@fe03 ~/SAS-BI]$ cd ~/sx

4.2.2. 1つ上位のディレクトリ

「..」(ピリオドを2つ続けた記号)は、カレントディレクトリの1つ上のディレクトリを表します。

例えば、カレントディレクトリを1つ上のディレクトリに移動するには、以下の様にします。

[hat@fe03 ~/SAS-BI]$ cd ..

[hat@fe03 ~]$ pwd

/home/hat

「/」(スラッシュ)を組み合わせてディレクトリを上位にたどって行くことができます。

例えば、2つ上位のディレクトリに移動するには、以下の様にします。

$ cd ../..

4.2.3. カレントディレクトリ

「.」(ピリオド1つ)は、カレントディレクトリを表します。

この「.」は、ファイルのコピーや移動先にカレントディレクトリを指定する際に使ったり、シェルスク

リプトやプログラムの実行のときにプログラムファイルを指定する場合に使います。

例えば、SAS-BI/milk.sas7bdat ファイルを、カレントディレクトリにコピーする際に、絶対パスではな

く「.」を使うことができます。

[hat@fe03 ~]$ cp SAS-BI/milk.sas7bdat .

4.2.4. 直前の作業ディレクトリ

cd コマンドは、引数に「-」を指定すると1つ前にいたディレクトリに戻ることができます。 これを使う

と、2つのディレクトリを行ったり来たりすることができます。

UNIX(Linux) 入門 4.2. ディレクトリを表す記号

16

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 21: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

[hat@fe03 ~]$ cd SAS-BI/

[hat@fe03 ~/SAS-BI]$ cd ../sx

[hat@fe03 ~/sx]$ cd -

[hat@fe03 ~/SAS-BI]$ cd -

[hat@fe03 ~/sx]$

コマンドプロンプトの表示で、ディレクトリが変わっていることが確認できます。

ただし、cdコマンド以外では「-」を引数に指定すると、別の機能と見なされますのでご注意ください。

bash(/bin/bash)の場合、 ls ~- の様にすると、直前のディレクトリの一覧を表示する

ことができます。 ただし、csh, tcshなどでは無効です。

4.3. ディレクトリの作成と削除

4.3.1. ディレクトリの作成

ディレクトリを作成するには、mkdirコマンドを使います。

$ mkdir 作成するティレクトリのハス

例えば、カレントディレクトリ配下に`Data`と言うディレクトリを作成するには、以下の様にします。

$ mkdir Data

また、Data ディレクトリとその配下に 2009 ディレクトリを一気に作成するには、 `-p`オプションを使

って、以下の様に実行します。

[hat@fe03 ~]$ mkdir -p Data/2009

[hat@fe03 ~]$ ls Data

2009

4.3.2. ディレクトリの削除

ディレクトリを削除するには、rmdirコマンドを使います。

rmdir で削除するディレクトリ配下には、ファイルが無いことが前提です。(ファイルがあると削除でき

ません)

UNIX(Linux) 入門 4.3. ディレクトリの作成と削除

17

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 22: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

[hat@fe03 ~]$ rmdir Data/

rmdir: Data/: Directory not empty

[hat@fe03 ~]$ rmdir Data/2009/

[hat@fe03 ~]$ rmdir Data/

この例の1行目では、Dataディレクトリに2009ディレクトリがある(ディレクトリが空ではない)ために、

削除できませんでした。

4.4. ファイル属性

4.4.1. 隠しファイル属性

ls コマンドで -a オプションを使うと、通常表示されない .(ドット)で始まるファイル(隠しファイル)が表

示されます。 隠しファイルは、通常表示する必要のない設定ファイルなどが多く、ドットファイルとも

呼ばれています。

.cshrc や .login などの設定ファイルで、システムの利用環境などが設定されます。

4.4.2. ディレクトリの属性

ls コマンドで -F オプションを使うと、ディレクトリと通常ファイルを区別して表示します。 ディレクト

リ名の後ろには / (スラッシュ)が表示され、通所のファイルとは区別されています。

-a オプションと組み合わせて ls -aF とすると、./ や ../ というディレクトリが表示されます。 これが

カレントディレクトリを表す「.」と、1つ上位のディレクトリを表す「..」になります。

ls コマンドに -l オプションを使うと、詳細なファイルリスト情報が表示されますが、最初が「d」で始

まるファイルがディレクトリで、「-」で始まるのが通常のファイルです。 その後に続く文字「rw-rw-

r」などは、許可属性(パーミッション)で、ファイルの所有者、グループ、その他のユーザに対するr

(read:読み込み)、w(write:書き込み)、x(execute:実行)権限の有無を表しています。 ディレクトリに対す

る実行権限とは、そのディレクトリをカレントディレクトリとすることを許可する権限となります。

5. ファイルのコピー、移動、削除

5.1. ファイルのコピー cp(copy)

ファイルをコピーするには、「cp」コマンドを使います。

引数には、「コピー元」「コピー先」の順に指定します。コピー先にファイル名を指定すると、その名前

でファイルの複製が作成されます。 コピー先にディレクトリを指定すると、そのディレクトリ配下にコ

ピー元と同じ名前のファイル名でコピーされます。

UNIX(Linux) 入門 4.4. ファイル属性

18

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 23: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

cp cow2b.sas milk.sas

cp milk.sas work/

cp milk.sas work/cow3.sas

cp work/cow3.sas .

カレントディレクトリを表す「.」を使うことも可能です。

5.1.1. ディレクトリを丸ごとコピー

ディレクトリ内のファイルを含めてを丸ごとコピーするには、-R オプションを使います。

cp -R work/ backup

5.1.2. ファイルの属性を保持してコピー

ファイルをコピーすると、更新日時などがコピーを実行した日時に変更されてしまいます。 ファイルの

バックアップなど、ファイルの属性(変更日時やパーミッション)をそのまま保持してコピーしたい場合

は、 -p オプションを使用します。

cp -p cow2b.sas cow2b.sas.bak

ディレクトリごとバックアップを行う場合などは、 cp -cdpR オプションを組み合わせて使います。 -a オ

プションは、 -cdpR オプションと同じ動作をします。

cp -a work/ backup

5.2. ファイルの移動 mv(move)

ファイルの移動コマンド「mv」は、コピー(cp)コマンドと同様の使い方ですが、移動元のファイルが消去

されます。 移動先に別のファイル名を指定することで、ファイル名の変更ができます。

mv milk.sas cow4.sas

mv cow4.sas work/

mv work/milk.sas .

5.3. ファイルの削除 rm(remove)

ファイルを削除するコマンド「rm」の基本的な使い方は、「rm ファイル名」とします。 複数のファイル

を指定することができます。

UNIX(Linux) 入門 5.2. ファイルの移動 mv(move)

19

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 24: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

ディレクトリを再帰的に(ディレクトリ内のファイルを含めて全て)削除する場合は、-r オプションを使

います。

rm で削除したファイルを復活させることはできませんので、rm コマンドの実行は慎重に行ってくださ

い。

rm milk.sas

rm -r work/

6. ワイルドカード

複数のファイルに対してコマンド操作を行う場合に、「ワイルドカード」と呼ばれる特殊文字を使うこと

ができます。

6.1. 任意の文字列「*」

「」(アスタリスク)は、0個以上の任意の文字列を表します。 例えば、「c.sas」であれば、c.sas,

cow.sas, cow2b.sas などにマッチします。

拡張子が「.sas」のファイルを全て「work」ディレクトリにコピーするには、以下の様にします。

cp *.sas work/

コピーの状況を表示するには、cp -v オプションを使います。

cp -v *.sas work/

6.2. 任意の1文字「?」

「?」(クエスチョンマーク)は、任意の1文字を表します。 例えば、「c??.sas」であれば、 cow.sas にマ

ッチしますが、c.sasやcow2b.sasにはマッチしません。

$ ls c????.*

cow2b.log cow2b.sas

6.3. 指定した文字のいずれかとマッチ

指定した文字のどれかにマッチさせるには、「[」と「]」の間に文字を指定します。

例えば、「c」、「f」、「s」で始まり、任意の拡張子3文字のファイル一覧を表示するには、以下の様に

UNIX(Linux) 入門 6. ワイルドカード

20

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 25: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

します。

$ ls [cfs]*.???

cow2b.log cow-test1.sas sas.log sasprt.pdf

cow2b.sas file.out sas1.fonts.txt sasprt.png

cow2.gif fork.txt sasgraph.png

文字を範囲指定する場合は、「-」ハイフンを使います。 例えば、数字で終わるファイルの一覧を表示す

るには、以下の様にします。

$ ls *[0-9]

index.html.1 sas-proc.200907080900 STDIN.o1360

java.log.16134 sas-proc.20090707 STDIN.e1360

7. 標準入出力とリダイレクション

7.1. 標準入出力 STD I/O(Standard Input / Output)

UNIX(Linux)では、コマンドのパラメータやデータの入力は「標準入力(stdin)」から行い、実行結果やメ

ッセージは「標準出力(stdout)」に出力されるようになっています。 コマンドに何も指定をしなければ、

標準入力と標準出力は、それぞれキーボードと画面(端末)に接続されています。

エラーメッセージの出力先「標準エラー(stderr)」も、標準出力と同じ画面に割り当てられています。

7.2. リダイレクション

これらの標準入出力や標準エラーの接続先を変更(リダイレクション)することができます。

7.2.1. 標準出力リダイレクション(>,>>)

標準出力をファイルに切り替えるには、「>」という記号を使って以下の様にします。

$ cal > Jan.2017

$ cat Jan.2017

  January 2017

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

UNIX(Linux) 入門 7. 標準入出力とリダイレクション

21

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 26: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

calコマンドの結果は画面には表示されず、Jan.2017ファイルに格納されました。 catコマンド

で、Jan.2017 ファイルを表示すると、カレンダーが表示されます。

「>」の記号を2つ続けて「>>]」とすると、ファイルの最後に追加されます。

$ cal 2 2017 >> Jan.2017

$ cat Jan.2017

  January 2017

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

  February 2017

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

ファイルの日本語文字コードの変換ツールnkfの実行でも「>]」を使います。

例:変換元ファイル(in-file.txt)を、文字コードを UTF-8 に変換、同時に改行コードをunix用に変換し

て、ファイル(out-file.txt)に保存する。(同じファイルへの入出力はできないので、一旦別のファイル名で

保存します。)

nkf -w -Lu in-file.txt > out-file.txt

7.2.2. 標準入力リダイレクション(<)

標準出力と同様に、「<」を使って標準入力をキーボードからファイルに切り替えることができます。

bcと言うコマンドは、通常キーボードからの入力によって計算を行います。

UNIX(Linux) 入門 7.2. リダイレクション

22

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 27: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

[hat@fe03 ~]$ bc

bc 1.06

Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type ‘warranty’.

5+9

14

1248*563

702624

quit

[hat@fe03 ~]$

次に、keisan.txtというファイルに、計算式を保存します。 ファイル作成には、catコマンドと標準出力

リダイレクションを使います。 ファイルを指定せずにcatコマンドを実行すると、標準入力からの入力待

ちの状態になり、入力された文字列をオウム返しのように画面に表示します。 この画面出力をファイル

にリダイレクションします。

[hat@fe03 ~]$ cat > keisan.txt

5+9

1248*563

CTRL+D (Ctrl キーを押しなから d を押す)

[hat@fe03 ~]$ cat keisan.txt

5+9

1248*563

[hat@fe03 ~]$

標準入力リダイレクションを使って、計算を実行してみます。

[hat@fe03 ~]$ bc < keisan.txt

14

702624

[hat@fe03 ~]$

計算結果が画面(標準出力)に表示されます。

リダイレクションを使わずに bc keisan.txt とすると、計算は実行されますが、入力待ちの状態になりま

す。 quitでbcを終了します。

UNIX(Linux) 入門 7.2. リダイレクション

23

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 28: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

[hat@fe03 ~]$ bc keisan.txt

bc 1.06

Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type ‘warranty’.

14

702624

quit (入力待ち状態になる。quit て bc を終了します。)

7.2.3. 標準エラーのリダイレクション

エラーや警告のメッセージは通常「標準エラー」に出力され、標準出力と同様に画面に表示されます。

標準エラーをリダイレクトするには、「2>」という記号を使います。

コマンド 2> ファイルのパス

標準出力と標準エラーを1つのファイルに保存するには、以下の様にします。

コマンド &> ファイルのパス

7.2.4. ファイルディスクリプタ

標準エラーのリダイレクションで指定した番号2は、ファイル記述子(ファイルディスクリプタ)と呼ばれ

る番号で、標準入力は「0」、標準出力は「1」、標準エラーは「2」が割り当てられています。

7.3. パイプ (コマンドを接続する)

コマンドの実行結果を画面(標準出力)に出力しないで、直接、他のコマンドの入力に受け渡すことができ

ます。 この機能を「パイプ」と言い、「|](縦棒記号)」を使います。

$ echo ”4*a(1) ” | bc -l

3.14159265358979323844

ここで、 echo "4*a(1)" は、「4*a(1)」という文字列を画面に表示するコマンドです。 これをbcコマン

ドの入力に渡すことで、計算結果が画面に表示されます。

bc の -l オプションは、数学ライブラリを読み込むオプションです。また、a(x)

は、ATAN(アークタンジェント)関数です。

この様に「|」記号を挟んで複数のコマンドを連結することで、複雑な処理を行う事ができます。

UNIX(Linux) 入門 7.3. パイプ (コマンドを接続する)

24

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 29: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

例えば、文字コードがShift-JISやEUCなどのファイルを、文字コード変換コマンド(nkf)を使って変換

し、1画面ずつ表示するページャ(less)に渡すことで、UTF-8の画面でも文字化けすることなくファイルを

確認することができます。

[hat@fe03 ~]$ nkf -w sas-prog-test.log | less

1 SAS システム

  2009年11月17日 火曜日 午後02時41分30秒

NOTE: Copyright (c) 2002-2008 by SAS Institute Inc., Cary, NC, USA.

NOTE: SAS (r) Proprietary Software 9.2 (TS2M0 DBCS3055)

  Licensed to THE MINISTRY OF AGRICULTURE, FORESTRY AND FISHERIE, Site 10204140.

NOTE: このセッションは SunOS 5.10 (SUN X64)

フラットフォーム上て実行されています。

You are running SAS 9. Some SAS 8 files will be automatically converted

by the V9 engine; others are incompatible. Please see

http://support.sas.com/rnd/migration/planning/platform/64bit.html

PROC MIGRATE will preserve current SAS file attributes and is

recommended for converting all your SAS libraries from any

SAS 8 release to SAS 9. For details and examples, please see

http://support.sas.com/rnd/migration/index.html

This message is contained in the SAS news file, and is presented upon

:

8. テキストエディタ vi

プログラムやデータなどのテキストファイルを編集するため、テキストエディタ(単にエディタとも言う)

を使うことがあります。

vi は、UNIX(Linux) で使われる標準的な(ほとんど全てのUNIXに入っている)エディタです。 vi には

「ノーマルモード」と「挿入モード」があり、多くのコマンドがあるため、初心者にはわかりづらく、と

っつきにくい印象ですが、慣れてくれば素早くファイル編集ができるツールとして活用でき、viの操作を

習得することは大変有用です。

Linuxでは、viの機能を拡張したvim(Vi IMproved)が標準のviに置き換えられていることが多くなってい

ます。 vimが導入されていない場合や、システムの環境設定によって、基本的な機能のみで動作するviが

起動ようになっている場合もあります。

vi が vim に置き換わっている。(シンボリックリンク)

hat@fe03 $ which vi

/usr/bin/vi

hat@fe03 $ ls -l /usr/bin/vi

lrwxrwxrwx 1 root root 8 12月 1 2014 /usr/bin/vi -> /bin/vim

UNIXで人気のあるエディタとして、emacsというエディタもあります。 また、Windowsのメモ帳

(notepad)の様なGUIのエディタもありますが、ターミナル(端末)からリモートで操作を行うには、vi

UNIX(Linux) 入門 8. テキストエディタ vi

25

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 30: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

(vim)やemacsなど、キーボードだけで操作できるエディタが必要となります。

8.1. ファイルのオープン (起動)

既存のファイル、または新しいファイルに対してエディタを起動するには、vi(またはvim)コマンドを使

います。

vi [filename]

例: vi hoge.txt

既存ファイルかあれは、そのファイルを開きます。

ファイルか無けれは、新規のファイルとして編集することか出来ます。

新しいファイルの場合、画面は次のようになります。起動直後は、「ノーマルモード」ですのでご注意く

ださい。キーを入力すると、コマンドと解釈されます。

~

~

~

~

~

~

~

"hoge.txt" [New File] 0,0-1 All

8.2. ファイルのセーブと終了

編集したファイルを保存して終了するには、 ZZ (大文字)とします。 ただし、「挿入モード」の場合は、

Esc キーを押して「ノーマルモード」にしてから、 ZZ とタイプします。

ファイルを保存するだけの場合は、 :w とします。 別名で保存するには、 :w filename とファイル名を指

定します。

何も編集をしていない状態で終了する場合は、 :q とタイプします。 終了と保存を同時 にするには、 :wq

とタイプします( :wq と ZZ は同じ)。

編集した内容がめちゃくちゃで、最初から編集をし直したい場合は、 :e! としてファイルを再読込しま

す。 また、編集内容を破棄して強制終了するには、 :q! とします。

8.3. 基本的な編集操作

8.3.1. カーソルを移動する

viでカーソルを移動するには、「j」「k」「l」「h」キーを使います。

UNIX(Linux) 入門 8.1. ファイルのオープン (起動)

26

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 31: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

      ↑         k キーは上方向に移動します。

      k         h キーは左方向に移動します。

 ← h   l →    l キーは右方向に移動します。

      j         j キーは下方向に移動します。

      ↓

8.3.2. 文字を入力する

vi は「ノーマルモード」と「挿入モード」があります。 挿入モードにするには何通りかの方法がありま

すが、一番標準的なコマンドは、i を押すやり方です。

i は表示されませんが、一番下の行が -- INSERT -- に変わり、これを押した後にタイプした文字が全て

画面に入力されるようになります。

次の操作(カーソルを移動する場合も) をしたい場合は、Esc キーを押してノーマル モードに戻ります。

表 4. vi 入力モードに関連するコマンド

コマンド 内容

a カーソルの後にテキストを入力

A カレント行の末尾にテキストを入力

i カーソルの前にテキストを入力

I 行の先頭にテキストを入力

o カーソル位置の下にテキストを挿入する空行をオープン

O カーソル位置の上にテキストを挿入する空行をオープン

8.4. テキスト削除

削除コマンド x を使うと、カーソル位置のテキストを削除します。 単語単位削除は dw 、行削除は dd を

使います。

さらに、これらのコマンドの前に数字を入力すると、コマンドの対象範囲が指定できます。 例えば、 2x

は 2 文字、 2dw は 2 word、 2dd は 2 行の削除となります。

8.5. vimチュートリアル

基本的な使い方については、vimのチュートリアルで学習することができます。 vimtutor jaとしてチ

ュートリアルを起動します。

UNIX(Linux) 入門 8.4. テキスト削除

27

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 32: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

$ vimtutor ja

===============================================================================

= V I M 教 本 (チュートリアル) へ よ う こ そ - Version 1.7 =

===============================================================================

  Vim は、このチュートリアルで説明するには多すぎる程のコマンドを備えた非常

  に強力なエディターです。このチュートリアルは、あなたが Vim を万能エディ

  ターとして使いこなせるようになるのに十分なコマンドについて説明をするよう

  になっています。

  チュートリアルを完了するのに必要な時間は、覚えたコマンドを試すのにどれだ

  け時間を使うのかにもよりますが、およそ25から30分です。

  ATTENTION:

  以下の練習用コマンドにはこの文章を変更するものもあります。練習を始める前

  にコピーを作成しましょう("vimtutor"したならば、既にコピーされています)。

  このチュートリアルが、使うことで覚えられる仕組みになっていることを、心し

  ておかなければなりません。正しく学習するにはコマンドを実際に試さなければ

  ならないのです。文章を読んだだけならば、きっと忘れてしまいます!

  さぁ、Capsロック(Shift-Lock)キーが押されていないことを確認した後、画面に

  レッスン1.1 が全部表示されるところまで、j キーを押してカーソルを移動しま

  しょう。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  レッスン 1.1: カーソルの移動

8.6. vim関連情報

参考となる情報

• Vim のブログ http://vimblog.hatenablog.com/entry/index

• 名無しのvim使い http://nanasi.jp/

8.6.1. vimの日本語文字コード自動判別

最近の Linux ではデフォルトのロケールか UTF-8 になっています。

vim も標準で文字コードの自動判別や変換に対応しているのですが、自動判別を有効にするに

は、.vimrc を設定する必要があります。

科学技術計算システムのフロントエンドサーバは、 LANG=en US.UTF-8 になっています。 SAS は、EUC が

標準なので、SAS のプログラムやデータは UTF-8 にする必要があります。( sas_ja.sjis を使う場合

は、SJIS とする)

SAS のプログラムやデータを vim で確認したり編集したりする場合に、文字コードの自動判別や変換が

UNIX(Linux) 入門 8.6. vim関連情報

28

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 33: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

できると大変便利になります。

文字コードと改行コード自動認識の設定

 ~/.vimrc に、自動判別の設定を追加します。.vimrc が無い場合は作成します。

 :set encoding=utf-8

 :set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8

 :set fileformats=unix,dos,mac

文字コード, 改行コードを指定して保存

vim でファイルを開き、任意の文字コードでファイルを保存 (変換) することがてきます。

vim でファイルを開き、vim のコマンドモードで以下のコマンドで文字コードを指定すると、保存する

ときに、指定した文字コードに変換されます。

文字コードを指定

:setl fenc=文字コード (setl=setlocal, fenc=fileencoding)

改行コードを指定

:setl ff=改行コード (setl=setlocal, ff=fileformat)

上記、文字コードを指定した後に、ファイルを保存します。

:w

文字化けしたファイルを開き直す

自動判別に失敗した場合に、文字コードを指定してファイルを開き直すことができます。

vim でファイルを開き、文字化けした状態で、vim のコマンドモードで以下コマンドでファイルを開き

直します。

:e ++enc=文字コート

vim でファイルを開き、ˆM という文字が表示される場合、改行コードを変更してファイルを開き直しま

す。

UNIX(Linux) 入門 8.6. vim関連情報

29

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 34: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

:e ++ff=改行コート

9. ネットワークの利用

手元のコンピュータ(ローカルホスト)から、ネットワークに接続されている別のUNIX(Linux)コンピュー

タ(リモートホスト)に、ログインして操作する主なコマンドについて説明します。

9.1. リモートログイン SSH (Secure Shell)

SSH : Secure SHell (セキュアシェル)は、ネットワークを通じて別のコンピュータにログインしたり、

コマンドを実行したり、ファイルを転送するためのロトコル(規約)、あるいはその実装プログラムで

す。

ネットワークを流れるデータは暗号化されるため、インターネット経由でも一連の操作を安全(盗聴や成

りすましに対して安全)に行うことができます。

Mac OS Xは、内部でUNIX(FreeBSD系)が動作していることもあり、これから説明するsshコマンド

(OpenSSHのコマンドが利用可能)などの操作をターミナルから行う事ができます。

sshによるリモートログインには、「パスワード認証」と「公開鍵認証」の2つの方法があります。 ここ

では、パスワード認証について説明します。

リモートログインを行うコマンドは、ssh (slogin) です。

$ ssh [email protected] または、

$ ssh -l login-id remote.host.jp

[email protected]’s password: <== ここにパスワードを入力

接続すると、パスワードの入力を求めてきますので、パスワードを入力します。 入力したパスワードは

表示されません。

接続元(ローカルホスト)のログイン名と、接続先(リモートホスト)のログイン名が同じであれば、login-id

の指定を省略できます。

hat@hat-desktop:~$ ssh scion.cc.affrc.go.jp

[email protected]’s password:

ローカルホストとリモートホストの日本語環境が異なる場合は、ログイン先環境の環境に合わせて、端末

ソフトの設定を変更する必要があります。

UNIX(Linux) 入門 9. ネットワークの利用

30

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 35: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

• OpenSSH (Open Secure Shell) は、OpenBSDプロジェクトにより開発が行わ

れ、BSDライセンスで公開されているSSHプロトコルを利用するためのソフトウ

ェアで、SSHサーバおよびSSHクライアントを含みます。

• リモートログインを行うコマンドとしては、sloginの方が本来のコマンドです

が、sshとsloginの実態は同じプログラムです。

windows用ssh対応ターミナルソフト

Windows PC で使える ssh に対応したターミナル (端末) ソフトを紹介します。

PuTTY (puttyjp)

Simon Tatham 氏によって作成された、フリーの Telnet/SSH クライアントです。 栄楽英樹

氏により、PuTTYで日本語を使えるようにするパッチが公開されています。

• http://www.chiark.greenend.org.uk/~sgtatham/putty/

• http://hp.vector.co.jp/authors/VA024651/

Tera Term

オリジナル版 Tera Term Pro, TTSSH を、SSH2 に対応するための機能を追加・改良したもの

です。 Sourceforge.jp のプロジェクトにより開発が続けられている。

• http://sourceforge.jp/projects/ttssh2/

9.2. ファイル転送 scp, sftp

SCPは、遠隔のコンピュータとローカルのコンピュータ間でファイル転送を行うプログラムです。 SFTP

は、SCP同様にファイル転送を行いますが、FTPと同様の使い方ができます。 どちらの場合も通信は暗号

化されますので、ネットワーク上の盗聴などに対して安全です。

9.2.1. scp

基本的な使い方は、cp(コピー)コマンドと同じですが、リモートのファイルを指定する場合は、

「ユーザ名@ホスト名:」が入ります。

:(コロン)の後のファイル名は、ホームディレクトリからの相対パスか、ルート(/)からの絶対パスで指

定します。

scp [user@host1:]file1 [user@host2:]file2

scp コピー元ファイル名 コピー先ファイル名

パソコンから、リモートホストへ

UNIX(Linux) 入門 9.2. ファイル転送 scp, sftp

31

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 36: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

$ scp program.f [email protected]:test/prog/

リモートホストからパソコンへ(最後の「 . 」は、カレントディレクトリを示す)

$ scp [email protected]:test/prog/program.f .

ディレクトリ配下を全てコピーする(作成日時やパーミッション変更無し)

$ scp -rp [email protected]:/hoem/login-id/test/ .

9.2.2. sftp

sftpは、ftpと同様に対話的な操作ができます。 一度の接続で複数のファイルや双方向のファイル転送を

行う場合は、sftpが便利です。

$ sftp [email protected]

Connecting to remote.host.jp...

[email protected]'s password: <== ここにパスワードを入力

sftp >

パスワードを入力し、認証に成功すると 「 sftp >」と表示したら、コマンドを入力して操作します。

終了するには、quit (bye, exitでもよい)と入力します。

表 5. sftpの主なコマンド

コマンド 機能

quit sftpを終了する (bye, exitでもよい)

put ローカルからリモートへ転送

get リモートからローカルへ転送

cd リモートのディレクトリを移動

ls リモートのファイル一覧

pwd リモートのカレントディレクトリを表示

rm リモートのファイルを削除

rmdir リモートのディレクトリを削除

lcd ローカルのディレクトリを移動

lls ローカルのファイル一覧

lpwd ローカルのカレントディレクトリを表示

UNIX(Linux) 入門 9.2. ファイル転送 scp, sftp

32

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 37: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

コマンド 機能

!command ローカル上のcommandを実行

sftpのGUIツール

sftpをGUIで操作するツールがあります。

Windows系

• WinSCP (https://winscp.net/eng/docs/lang:jp)

• FFFTP (https://ja.osdn.net/projects/ffftp/)

Mac

• Viper FTP Lite (https://itunes.apple.com/jp/app/viper-ftp-lite-handy-ftp-client/

id1001007066?mt=12)

Linux

• gFTP (https://www.gftp.org)

10. シェルスクリプト

ユーザがタイプしたコマンドライン操作は、シェルというプログラムで解釈され、実行されて結果を画面

に表示します。

同じようなコマンド操作を繰り返したり、一連の操作を行いたいときに、その操作手順を登録しておくと

便利です。 複数のコマンドが連続して動作するように、実行手順をあらかじめファイルに記述しておい

たものが「シェルスクリプト」です。 また、シェルスクリプトは、変数や分岐処理などプログラミング

言語としても利用できます。

スーパーコンピュータのような共同利用のシステムでは、計算機資源を各ユーザに割り

当てるジョブスケジューラ(バッチジョブ管理システム)でプログラムを実行する際に、

プログラムの実行環境や実行手順を記述したシェルスクリプトを使います。

10.1. シェルスクリプトの書き方と実行

ここでは、Bシェル系(sh, bash)のシェルスクリプトについて、説明します。

シェルスクリプトは、テキストファイルとして作成します。 例として、script1.sh という名前で、以下

の内容のファイルをviなどのエディタを使って作成します。

UNIX(Linux) 入門 10. シェルスクリプト

33

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 38: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

リスト 4. script1.sh

#!/bin/sh

date

pwd

echo "I am $USER"

echo '4*a(1)' | bc -l

cal `date '+%Y'`

1行目の「 !/bin/sh 」は、「 ! 」に続く部分のプログラムでスクリプトが実行されます。

2行目以降は、スクリプトで実行されるコマンドです。

date システムの日時を表示するコマンド

pwd カレントディレクトリを表示するコマンド

echo "I am $USER" echo コマンドは、文字列を表示するコマンド

echo '4*a(1)' | bc -l パイプやリダイレクションも使うことが出来ます

cal `date '+%Y'` カレンダーを表示するコマンド

$USERは、ユーザ名が格納された環境変数です。

「\` 」(バッククオート)を使うと、コマンドの実行結果を文字列として扱うことができます。 「cal date

'+%Y'」では date コマンドの実行結果を cal コマンドの引数に指定しています。

• B シェル系(sh, bash) と C シェル系(csh, tcsh)では、書式が異なることがありま

すのでご注意願います。

• 環境変数は、シェルのプロセス及びその子プロセスで有効な変数です。 システ

ムの利用環境として、 $USER や $PATH などの値がログイン時に設定されてい

ます。

10.1.1. シェルスクリプトの実行

シェルスクリプトを作成しても実行権限がないため、ファイル名を指定しても実行できません。

$ ./script1.sh

./script1.sh: Permission denied.

利用環境に依存しますが、Permission denied.などのメッセージが表示され、スクリプトは実行できませ

ん。

実行権限を付与するには、chmodコマンドを使います。

UNIX(Linux) 入門 10.1. シェルスクリプトの書き方と実行

34

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 39: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

$ ls -l script1.sh

-rw-r--r-- 1 hat hat 87 2010-01-05 11:24 script1.sh

$ chmod u+x script1.sh

$ ls -l script1.sh

-rwxr--r-- 1 hat hat 87 2010-01-05 11:24 script1.sh

chmodコマンドのオプション u(ユーザ)に対し +x(実行権を付加)することで、スクリプトを実行可能にし

ます。

実行権限がないファイルでも、shコマンドの引数として指定すれば、シェルスクリプトが読み込まれて実

行されます。

$ sh script1.sh

実行権限が付与されていれば、ファイル名を指定してシェルスクリプトを実行することができます。

$ ./script1.sh

Tue Jan 10 16:00:34 JST 2017

/home/hat

I am hat

3.14159265358979323844

  2017

  January February March

Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa

 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4

 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11

15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18

22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25

29 30 31 26 27 28 26 27 28 29 30 31

-- 中略 --

  October November December

Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa

 1 2 3 4 5 6 7 1 2 3 4 1 2

 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9

15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16

22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23

29 30 31 26 27 28 29 30 24 25 26 27 28 29 30

  31

10.1.2. コメント

他のプログラミング言語と同様にシェルスクリプトでも、行頭に「#」を記述してコメントを入れること

UNIX(Linux) 入門 10.1. シェルスクリプトの書き方と実行

35

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 40: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

ができます。

リスト 5. script2.sh

#!/bin/sh

# これはコメントです。

echo "これは表示されます。"

このスクリプトを実行すると、以下の様になります。

$ ./script2.sh

これは表示されます。

10.2. 変数

変数とは一時的に文字や数字などの値を入れて記憶します。変数を指定することで、値を記憶させたり、

取り出して使います。

シェルの変数には、「シェル変数」と「環境変数」があります。

10.2.1. シェル変数

シェル変数は、実行中のプロセス(シェルやコマンド、シェルスクリプト)の内でのみ有効な変数です。

シェルスクリプトから起動するコマンドやスクリプトは、「シェル変数」を参照することはできません。

変数に値を代入するには、以下の様にします。 値に何も指定しない場合は、変数は定義されますが、値

は何もない(NULL)状態になります。

$ My_Name=Hattori

$ echo $My_Name

Hattori

$ My Name=

$ echo $My Name

$

10.2.2. 環境変数

環境変数は、シェルのプロセスおよびその子プロセスで有効な変数です。シェルから起動した他のコマン

ドやシェルスクリプトなどに変数を引き渡す場合は、環境変数を使う必要があります。

定義したシェル変数を環境変数に切り替えるには、exportコマンドを使います。

UNIX(Linux) 入門 10.2. 変数

36

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 41: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

$ My_Name=Hattori

$ export My_Name

Cシェル系は、setenvコマンドを使います。 値に指定(書式)も異なりますので注意して

ください。

10.3. 引数

コマンドと同様に、シェルスクリプトの後にファイル名などを引数として指定することができます。

10.3.1. 位置パラメータ

シェルスクリプトの引数は、「位置パラメータ」と呼ばれる特殊な変数に代入されます。 この位置パラ

メータを参照することで、引数の値をシェルスクリプトで使うことができます。

位置パラメータは、「$0」「$1」「$2」「$3」……「$10」…… のように表され、「$0」には、実行した

シェルスクリプト自身が代入され、「$1」以降に指定した引数が順に代入されます。

リスト 6. hikisu.sh

#!/bin/sh

echo "0=$0 1=$1 2=$2 3=$3 4=$4 5=$5"

このシェルスクリプトに引数を指定して実行すると、以下のようになります。

$ ./hikisu.sh hoge file 35 2000

0=./hikisu.sh 1=hoge 2=file 3=35 4=2000 5=

引数の5番目は指定が無いために、NULLとなっています。

10.3.2. 引数の数

引数の数は、「$#」という変数に代入されます。 引数を4個指定した上記の例で、hikisu.sh内で$#を参

照すると、値は4となります。

10.4. サンプルスクリプト

簡単なサンプルスクリプトを例に、もう少し説明します。

この例では、気象(アメダス)データを取得し、グラフを作成する手順をスクリプトにしています。 実

際には、欠測値の取り扱いなどを考慮する必要があります。

UNIX(Linux) 入門 10.3. 引数

37

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 42: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

リスト 7. amedas-kion.sh

#!/bin/sh

CHITEN=40336 # 40336=つくば つくば市長峰 高層気象台

YEAR=2018 # 取得データの年

MONTH=12 # 取得データの月

FILE="AR$YEAR$MONTH.$CHITEN.csv" # リアルタイムアメダスのファイル名

DIR="/NDB/csv/amedas/real/$YEAR/$MONTH/" # フロントエンドサーバのディレクトリ

# catコマンドで、gnuplotのコマンドを一時データファイルに出力

# nkfコマンドでUTF-8に変換(データファイルは、shift-jisなので)

# grep ^地点番号で、地点番号で始まるデータを取り出す(ヘッダ部分を除く)

# cutコマンドで、日時と気温のデータだけを取り出す

# trコマンドで、","(カンマ)をタブに変換して、一時データファイルに追加

# 一時データファイルにgnuplotのendコマンドを追加

# 上記の一連の結果を{ }でまとめて、amedas-kion.datファイルに出力

{

cat <<_EOT_

set term png

set output "amedas-kion.png"

set xdata time

set timefmt "%Y%m%d%H"

set title "AMeDAS"

set ylabel "Air temperature"

set xzeroaxis lt -1

set xlabel "Date"

set format x "%m/%d"

plot "-" using 1:2 with line ti "Chiten=$CHITEN"

_EOT_

nkf -w $DIR$FILE | grep ^$CHITEN | cut -d',' -f2,6 \

  | tr "," "\t"

echo "end"

} >>amedas-kion.dat

# gnuplotでグラフを作成する

gnuplot amedas-kion.dat

# 一時データファイルを削除

rm amedas-kion.dat

このサンプルを実行するには、wget, gnuplot などがインストールされている必要があります。

スクリプトの動作については、コメントに記述しています。 各コマンドの詳細は、マニュアルやイン

ターネット上の情報を参照してください。

UNIX(Linux) 入門 10.4. サンプルスクリプト

38

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 43: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

データファイル

科学技術計算システムのフロントエンドサーバでは、気象データなどの数値デー

タが「/NDB」配下にあります。

gnuplot

gnuplot(ニュープロット)は、グラフを作成するためのフリーソフトウェア

で、Linux, UNIX, Windows, Mac OS Xなど、多くのOSに対応したバージョンが

開発されています。

10.4.1. ヒアドキュメント

このスクリプト内でgnuplotのコマンドをcatコマンドを使ってファイルに出力しています。 ここで <<

(二重の入力リダイレクション)記号を使っています。

cat <<_EOT_

set term png

set output "amedas-kion.png"

set xdata time

set timefmt "%Y%m%d%H"

set title "AMeDAS"

set ylabel "Air temperature"

set xzeroaxis lt -1

set xlabel "Date"

set format x "%m/%d"

plot "-" using 1:2 with line ti "Chiten=$CHITEN"

_EOT_

これをヒアドキュメントと言い、 <<_EOT_ から EOT までの行を入力として取り込むことができます。

command <<終了文字

hoge hoge

foo bar

終了文字

10.4.2. コマンド中の改行

nkfから始まるデータ変換を行うコマンドは、パイプを使って幾つかのコマンドをつなげているため、長

い1行のコマンドとなりますが、見やすくするために途中で改行しています。

次の行が続きの行であることを認識させるために、 \ (バックスラッシュ)を使います。

UNIX(Linux) 入門 10.4. サンプルスクリプト

39

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 44: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

nkf -w $FILE | grep ^$CHITEN | cut -d',' -f2,6 \

  | tr "," "\t"

Windows系では、¥(円マーク)と表示されます。

10.4.3. 実行結果のグラフ

このスクリプトを実行して作成したグラフを以下に示します。

図 2. 気温データのグラフ

10.5. 参考

他のプログラミング言語と同様にシェルスクリプトには、if, test, caseなどの条件判別や分岐処理、for,

whileなどの繰り返しループ処理などがあり、高度なプログラムを作ることができます。 ここでは紹介で

きませんので、インターネット上の情報や書籍等を参考にしてください。

10.5.1. インターネット上の情報

• シェルスクリプト入門

http://hocolamogg.com/unix/shellscript/index.html

• シェル・スクリプト・リファレンス INDEX

http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230580/

• UNIX & Linux コマンド・シェルスクリプト リファレンス

UNIX(Linux) 入門 10.5. 参考

40

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 45: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

http://www.geocities.jp/geo_sunisland/

10.5.2. 書籍等

• 入門UNIXシェルプログラミング 改訂第2版, ブルース・ブリン 著, 山下 哲典 訳, 2003-02-03,

ISBN 4-7973-2194-6, ソフトバンククリエイティブ

• UNIXコマンドブック 第3版, 伊藤 真人、田谷 文彦、三澤 明 著, 2009-06-26,

ISBN 978-4-7973-5278-8, ソフトバンククリエイティブ

• 仕事に使えるLinuxシェルスクリプト, 千葉 真人 著, 2004-11-29, ISBN 4-8222-8209-0, 日経BP社

11. プログラムの利用

シェルスクリプトや、Perl, Rubyなどは、ソースコードを逐次解釈しながら実行するため、エディタなど

でプログラムを作成すれば、シェルスクリプトと同様に、すぐに実行することができます。 このような

プログラム(プログラミング言語)をインタープリタと言います。

これに対してC言語やFortranなどのコンパイラ方式は、ソースコードをコンピュータが実行できる形式

(機械語、オブジェクトコード、バイナリーコードなどと言う)に翻訳してから、プログラムを実行しま

す。 この翻訳を行うソフトウェアをコンパイラと呼び、翻訳することをコンパイルすると言います。

多くの場合、コンパイルされたプログラムの実行は、インタプリタよりも高速です。 しかし、プログラ

ムを開発する際には、プログラムの変更、動作テストの度に、コンパイル作業が必要となります。

• ソースコード(Source Code)は、人が読み書きすることができるテキスト(文字列)

で、一連の指示を記述したプログラムです。

• UNIX(Linux)は、C言語で書かれています。 また、UNIX系の多くのプログラム

(コマンドなど)はC言語で書かれています。

11.1. コンパイラ

多くのLinuxディストリビューションには、無償で使える開発環境GCC(the GNU Compiler Collection)

が、パッケージとして導入できるようになっています。

• GCC環境は、標準ではインストールされていないことが多い。開発環境を追加イ

ンストールすることで利用可能となる。

• 科学技術計算システムには、GCCの他に、商用コンパイラの Intel の C, C++,

Fortran コンパイラ、 PGI(The Portland Group Inc.) の C, C++, Fortranコンパ

イラが導入されています。 SXについては、専用のコンパイラを使います。

GCCには、 C, C++, Objective-C, Fortran, Java と、それらのライブラリ群が含まれています。

UNIX(Linux) 入門 11. プログラムの利用

41

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 46: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

ライブラリ: 汎用性の高い複数のプログラムを、再利用可能な形でまとめたもの。

CPUの種類(アーキテクチャ)によって、解釈する機械語(オブジェクトコード)が異なるため、同じプログ

ラムを別のアーキテクチャのコンピュータで実行するためには、ソースコードからコンパイルし直す必要

があります。

例えば、x86系Lnuxで作成したプログラムを、SPARC系Solarisなどのコンピュータで

実行する場合は、再コンパイルが必要

11.2. プログラム作成と実行

FortranやC言語は、コンパイラ方式のプログラミング言語で、プログラム作成から実行までには、3つの

手順があります。

1. ソースコード(ソースプログラム)の作成

vi(vim)やEmacsなどのテキストエディタを用いて、FortranやC言語の書式を用いてプログラムを

作成します。

C言語のソースコードのファイル名は、「.c」の拡張子を付けるようにします。

Fortranのソースコードのファイル名は、「.f90」「.f95」「.f」などの拡張子を付けることが一般

的です。

また、コンパイラによっては、これらの拡張子によってFortranの書式を判断する場合もありま

す。

2. コンパイル

FortranやC言語で書かれたソースコードを計算機が実行できる形式(機械語、オブジェクトコー

ド、バイナリーコードなどと言う)に変換します。

C言語の標準的なコマンドは「cc」(c compiler)ですが、Linuxなどでは「gcc」へのシンボリック

リンク(実態は「gcc」)となっていることが多く、説明ではgccを使います。

Fortranについて、GCC 4.0からは、Fortran90, Fortan95に対応した「gfortran」が利用できま

す。

コンパイル中にエラーが発生した場合は、手順1に戻りソースコードの不具合を修正してから再度

コンパイルを行います。

3. コンパイル済みプログラムの実行

コンパイルに成功すれば、実行形式のプログラム(バイナリーコード)が作成されるので、ファイル

名を指定して実行します。

プログラム実行中にエラーが発生したり、想定した動作をしない場合は、手順1に戻り、プログラ

ムの修正を行います。

Fortranは、言語の規格が変更されFortran77, Fortran90, Fortran95などがあり、ソー

スコードファイルの拡張子やコンパイルオプションで、それぞれの書式に対応していま

す。 Fortran77は、構造化プログラミングができないなどの問題があります。 古いプ

ログラムをコンパイルするためのオプションと言えます。

UNIX(Linux) 入門 11.2. プログラム作成と実行

42

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 47: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

この作業をエラーが無くなるまで繰り返します。これをデバッグ(Debug)と言います。

11.3. Cプログラムの作成と実行

C言語を使った簡単なプログラミングを説明します。

11.3.1. ソースコードの作成

viなどのエディタを使って、以下のプログラムを作成します。ファイル名は「hello.c」とします。

$ vi hello.c

リスト 8. hello.c

#include <stdio.h>

int main(void)

{

  printf("Hello World\n");

  return 0;

}

11.3.2. コンパイル

以下のコマンドでコンパイルします。

$ gcc -o hi hello.c -Wall

-o オプションは、出力する実行形式ファイルのファイル名です。 出力ファイル名を指定しない場合

は、a.out というファイル名で実行形式ファイルが作成されます。

-Wall オプションは、コンパイル時のWarningを全て(all)出力します。

コンパイルが成功すれば、実行形式のファイルが作成されています。 実行権限も設定されています。

$ ls -l hi

-rwxr-xr-x 1 hat hat 8298 2010-01-27 14:35 hi

11.3.3. 実行

実行形式ファイルのパスを指定して、プログラムを実行します。

UNIX(Linux) 入門 11.3. Cプログラムの作成と実行

43

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public

Page 48: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

$ ./hi

Hello World

このプログラムは、画面に「Hello World 」と表示するというプログラムですので、正常に動作している

ことが確認できます。

11.4. Fortranプログラムの作成と実行

C言語と同様の簡単なプログラムを作成して実行してみます。

11.4.1. ソースコードの作成

viなどのエディタを使って、以下のプログラムを作成します。ファイル名は「hello.f90」とします。

$ vi hello.f90

リスト 9. hello.f90

write(*,*)"Hello World"

stop

end

11.4.2. コンパイル

以下のコマンドでコンパイルします。

$ gfortran -o hi-f hello.f90 -Wall

-o オプションは、出力する実行形式ファイルのファイル名です。 出力ファイル名を指定しない場合

は、a.out というファイル名で実行形式ファイルが作成されます。

-Wall オプションは、コンパイル時のWarningを全て(all)出力します。

コンパイルが成功すれば、実行形式のファイルが作成されています。 実行権限も設定されています。

$ ls -l hi-f

-rwxr-xr-x 1 hat hat 8717 2010-01-27 15:21 hi-f

11.4.3. 実行

実行形式ファイルのパスを指定して、プログラムを実行します。

UNIX(Linux) 入門 11.4. Fortranプログラムの作成と実行

44

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Page 49: UNIX(Linux) 入門 2.5. コマンドラインの編集とヒストリー. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

$ ./hi-f

Hello World

このプログラムは、画面に「Hello World」と表示するというプログラムですので、正常に動作している

ことが確認できます。

UNIX(Linux) 入門 11.4. Fortranプログラムの作成と実行

45

Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

Public