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

目次
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. ヒストリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6. UNIX(Linux)でよく使うコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3. UNIX(Linux)のディレクトリ構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1. ファイルシステム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1. ユーザの位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.2. 絶対パスと相対パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2. ファイルの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1. テキストファイルとバイナリファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.2. テキストの中身を表示する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.3. ファイルの先頭や末尾を表示する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
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
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. 標準エラーのリダイレクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.2.4. ファイルディスクリプタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.3. パイプ (コマンドを接続する) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8. テキストエディタ vi(vim). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8.1. ファイルのオープン (起動) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.2. ファイルのセーブと終了. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.3. 基本的な編集操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.3.1. カーソルを移動する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.3.2. 文字を入力する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.4. テキスト削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.5. vimチュートリアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.6. vim関連情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.6.1. vimの日本語文字コード自動判別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9. ネットワークの利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.1. リモートログイン SSH (Secure Shell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

9.2. ファイル転送 scp, sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
9.2.1. scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
9.2.2. sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.3. SSH公開鍵認証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
9.3.1. SSH秘密鍵と公開鍵の生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.3.2. 公開鍵の登録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
9.3.3. 公開鍵認証によるログインとファイル転送. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
10. シェルスクリプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
10.1. シェルスクリプトの書き方と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
10.1.1. シェルスクリプトの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
10.1.2. コメント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
10.2. 変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
10.2.1. シェル変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
10.2.2. 環境変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
10.3. 引数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
10.3.1. 位置パラメータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
10.3.2. 引数の数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
10.4. サンプルスクリプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
10.4.1. ヒアドキュメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
10.4.2. コマンド中の改行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10.4.3. 実行結果のグラフ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10.5. 参考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10.5.1. インターネット上の情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.5.2. 書籍等. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11. プログラムの利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11.1. コンパイラ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11.2. プログラム作成と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
11.3. Cプログラムの作成と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.1. ソースコードの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.2. コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.3. 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.4. Fortranプログラムの作成と実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.4.1. ソースコードの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.4.2. コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.4.3. 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

1. 予備知識

1.1. UNIXとは

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操作で多くの作業ができる環境が提供されています。

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

PublicUNIX(Linux) 入門

1.5. ログインとログアウト• Linuxディストリビューション: LinuxカーネルとWebブラウザやメールソフトなどのアプリケーションソフトや、 それらを動かすための周辺ソフトウェアを組み合

わせた配布パッケージで、 多くのディストリビューションがある。 (RedHat,
Debian GNU/Linux, SUSE, Ubuntu, CentOS, Fedora, Rocky, AlmaLinux…)• 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 (ログイン名、ユーザ名) と パス
ワードによって認証を行います。 (SSH公開鍵認証の場合は、登録した鍵のペアを照合して認証します。)
2
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

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

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

ログイン名、ユーザ名(login name, login-id, user name)システムに登録されたユーザを識別する名前です。
SSH接続
SSH(Secure Shell)は、ネットワークを経由して別のコンピュータにログインしたり、コマンドを実行するためのプログラムで、ネットワーク上を流れるデータは暗号化されるため、安全に操作することができます。
SSH公開鍵認証
SSHキーペア(秘密鍵と公開鍵)を作成し、公開鍵をシステム(サーバ)に登録することで、手元の秘密
鍵と公開鍵を照合し、認証を行います。 秘密鍵は厳重に管理し、パスフレーズを設定することで、秘密鍵の所有とパスフレーズの照合が必要となり、パスワード認証よりも安全性が高くなります。
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

lfs

sastestls コマンドは、ディレクトリの内容を一覧表示するコマンドです。何も指定せずに実行すると、カレン
トディレクトリにあるファイルやディレクトリが表示されます。
3
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

2.1. シェル(shell)

2.1. シェル(shell)
ユーザがタイプしたコマンドは、シェル(shell)というプログラムによって解釈され、実行されます。シェルは、システムの中核プログラムのカーネルとユーザの間で、コマンドの解釈、結果の表示といったことを行います。 また、プログラミング(シェルスクリプト)言語としてシェルを利用する事もでき、自動実行などに使われています。
利用者がログインすると自動的に起動するシェルを標準シェル(ログインシェル)と言います。 多くのLinux ディストリビューションで標準シェルとなっているのが「bash」ですが、システムによって、
csh(tcsh), zsh などが使われています。
• bash(/bin/bash) は、Bシェル(bourne shell, /bin/sh)を拡張したシェルです。また、Cシェル(csh, /bin/csh)を拡張した tcsh も使われています。最近のLinuxディストリビューションでは、Bシェルを bash に、Cシェルを tcsh に置き換えていることが多い。
• 商用のUNIXなどで本来(拡張版でない)のCシェル、Bシェルが使われている場合、シェルスクリプト等で拡張された機能や書式が使えない場合がありますので注意
してください。

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

表 1. 主なシェル
シェル
sh

説明
Stephen R. Bourne氏による Bourneシェル(Bシェル)は、UNIXシステムの標準となっている。シェ
ルスクリプトの標準として使用されている。

bash

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

csh

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

tcsh

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

zsh

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

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

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

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

2.2. コマンドの書式

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



Windowsなどで作成した、ファイル名にスペースが入ったファイルを転送した場合に、 複数の引数と解釈されコマンドが正常に処理できない場合があります。

UNIX(Linux)では、コマンド、引数、ファイル名などで、大文字、小文字を区別します。 多くのコマン
ドは、小文字になっています。
コマンドによって引数の値や順番などが違います。
引数の指定例として、cal(calendar)コマンドで引数なし、引数1(2017)、引数1(6)と引数2(1990)を指定した場合の出力を以下に示します。
リスト 1. 引数なし(今月のカレンダー)$ calJanuary 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
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
Su Mo Tu We Th Fr Sa
1 2 3 45 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28March
Su Mo Tu We Th Fr Sa
1 2 3 45 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

April
Su Mo Tu We Th Fr Sa1
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

May
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

June
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

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

PublicUNIX(Linux) 入門

2.3. コマンドオプション

リスト 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

lfs

SAS-BI

sasuser.v92$ ls -t
lfs sasuser.v92 SAS-BI cow2b.sas$ ls -lt
total 12lrwxrwxrwx 1 norin center
7 Jun 26 10:41 lfs -> /lfs/norin
drwxr-xr-x 2 norin center 4096 Jun 26 08:42 sasuser.v92
drwxr-xr-x 2 norin center 4096 Jun 17 19:07 SAS-BI「-アルファベット」のような指定方法の他に、「--」ハイフン2つに続けて英単語で指定するオプショ
ンもあります。
先ほどのlsコマンドで更新日時順と詳細な情報を表示するオプションは以下の様になります。
$ ls --sort=time --format=long
total 12lrwxrwxrwx 1 norin center
7 Jun 26 10:41 lfs -> /lfs/norin
drwxr-xr-x 2 norin center 4096 Jun 26 08:42 sasuser.v92
drwxr-xr-x 2 norin center 4096 Jun 17 19:07 SAS-BI-rw------- 1 norin center 3882 Feb 26 17:49 cow2b.sas



ローカルのLinux(PC)とリモートのサーバでは、lsコマンドの表示が違う場合があります。 これはシステムによって標準で指定されたオプションが違っているためです。
(ls -F や ls --color=auto などをお試しください)6
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

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

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

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, --alldo 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: 行の先頭に移動))も可能です。

2.5.2. ヒストリー
シェル(bash, tcshなど)には、コマンドの履歴(ヒストリー)を記憶する機能があります。
上矢印キー「↑」を押すか「Ctrl+P」を押すと、コマンドを一つずつさかのぼって表示します。 下矢印
キー「↓」か「Ctrl+N」で一つずつ戻ります。
表示されたコマンドは、 Enter キーを押すと実行されます。 また、編集することができますので、間違えた箇所を修正したり、引数を少しずつ変更して実行することができます。
7
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

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

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

ファイルをコピーcpcp [コピー元] [コピー先]

cp -r, cp -rp

ファイルを削除rm

rm [ファイル名]

rm -r

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

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

機能

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

コマンド

ファイル名を変更、移動

mv

利用法

使用例

mv [元のファイル] [変更(移 mv hoge work/動)先]ディレクトリを作成

mkdir [ディレクトリ名]

mkdir work

cd

cd [ディレクトリ]

cd work, cd .., cd

pwd

pwd

ディレクトリを削除

rmdir

rmdir [ディレクトリ名]

ファイル検索find

find [ディレクトリ名] [オプ find work/ -name hogehge

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

mkdir

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

ション]
ファイルタイプを表示

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

sort

grep [オプション] [ファイgrep [keyword] file, grep -v [keyword]

ル名]

file

sort [オプション] [ファイル sort file, sort -k 3 -n file
名]文字数カウントwc

wc [オプション] [ファイルwc filename

名]
アクセス権限アクセス権限の変更

chmod

chmod [オプション] [ファイル名]

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

PublicUNIX(Linux) 入門

機能

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

コマンド

利用法

使用例

tar [オプション] [アーカイtar zcvf hoge.tar.gz dir/, tar zxvf

ブ先] [アーカイブもと]

hoge.tar.gz

ファイルアーカイブ、圧縮
複数のファイルを一つにファイルの圧縮、展開

tar

gzip, gunzip gzip [圧縮するフィル],

gzip hoge.txt, gunzip hoge.txt.gz

gunzip [解凍するファイル]
ファイルの圧縮、展開

bzip2,

bzip2 [圧縮するファイル],bunzip2

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

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

ユーザの環境設定表示

env

env

ディスクの使用状況表示df

df [オプション]

df -k

ディスクの使用量表示

dudu [オプション] [ディレクdu -s ./*

を表示
各種情報の表示トリ名]
ディスクの容量制限表示

quota

quota [オプション]
quota_state (科学技術計算システムでは、
quota_stateを使う)

現在の日時を表示

date

date [オプション]

date

カレンダー表示calcal [オプション] [表示指定cal -3, cal -y

期日]
シェル環境
bashの起動

bash

bash

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

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

機能

コマンド

aliasの設定、表示

alias

3.1. ファイルシステム

利用法

使用例

alias [エイリアス名]=’[コマ alias
ンド [オプション]]’aliasの解除

unaliasunalias [コマンド]

環境変数設定 (csh)setenvsetenv [環境変数] [設定値] setenv LANG C

環境変数設定 (sh,bash)

export

変数名=設定値; export [環LANG=C; export LANG

境変数]
コマンド履歴historyhistory

ネットワーク
SSH ログイン

ssh(slogin) ssh -X
norin@scion.cc.affrc.go.jp

SCP ファイルコピー

scp

scp [コピー元] [コピー先]

scp file.namenorin@scion.cc.affrc.go.jp:dirname/

SFTP ファイルコピー

sftp

sftp [ユーザ名]@[接続先ホ sftp norin@scion.cc.affrc.go.jp
スト名]

quota_state : 科学技術計算システムでは、利用者のデータを格納したファイルサーバ
上で quota コマンドを実行する必要があるため、別のコマンドを設定しています。

3. UNIX(Linux)のディレクトリ構造
3.1. ファイルシステム
ファイルを格納する入れ物をディレクトリと言います。 WindowsやMacでフォルダと呼ばれている物
がディレクトリにあたります。
ディレクトリ自体もファイルと同様にディレクトリに格納できるので、UNIX(Linux)のファイルシステ
ムはツリー(木)構造となっています。
ツリーの頂点(木を逆さまにしたイメージで根にあたる部分)をルート(root)と呼び「/(スラッシュ)」で表記します。

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

PublicUNIX(Linux) 入門

3.2. ファイルの表示

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

3.1.1. ユーザの位置
現在、ユーザがいるディレクトリのことをカレントディレクトリと呼びます。 pwd コマンドでカレント
ディレクトリを表示することができます。
ログインした時点では、ホームディレクトリと呼ばれる自分専用のディレクトリがカレントディレクト
リとなります。 ディレクトリを指定せずにファイルやディレクトリの操作(ls 等コマンド操作)を行った
場合には、カレントディレクトリでの作業として処理が行われます。

3.1.2. 絶対パスと相対パス
ファイルやディレクトリまでの道筋のことを「パス」と呼びます。 このパスの指定方法には、「絶対パス」と「相対パス」があります。 絶対パスは、ルート「/」からたどって指定する方法で、相対パス
は、カレントディレクトリを起点として指定する方法です。
pwdコマンドを実行すると、「/home/login-id」のように絶対パスで表示されます。 ディレクトリの区
切りも「/」が使われています。
「ls SAS-BI」のようにlsコマンドの引数が「/」で始まる絶対パスでない場合は、カレントディレクト
リからの相対パスとして処理されます。
$ pwd/home/norin$ ls
cow2b.sas lfs SAS-BI sasuser.v92$ ls SAS-BI
milk.sas7bdat systemcpu.sas7bdat

3.2. ファイルの表示

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

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

3.2. ファイルの表示

3.2.1. テキストファイルとバイナリファイル
テキストファイル(text file)は、文字や数字などの文字コードで構成され、人間が読んで理解できる形式のデータ(シェルスクリプトやCSVデータなど)のファイルです。 テキストファイル(テキストデータ)
は、端末に表示したりテキストエディタで編集することができます。
これに対して、バイナリファイル(binary file)は、コンピュータが処理するために2進数で構成されたファイルで、人間がそのまま読んで理解することは困難です。
バイナリファイルには、画像、音声、圧縮されたファイルなどがあります。 また、プログラム言語 (C,FORTRANなど) で書かれたソースコード(テキスト)に対して、 コンパイル(コンピュータで実行可能な形式に変換)されたプログラム(オブジェクトファイルや実行ファイル)をバイナリと呼ぶことがあります。



テキストファイルかバイナリファイルかを調べるコマンド file$ file hello.c
hello.c: C source, ASCII text
$ file hi
hi: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ldlinux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=3fa1025d3a53dcc98a69359b2486e4ed1c620171, notstripped$ file amedas-kion.png
amedas-kion.png: PNG image data, 640 x 480, 8-bit colormap, non-interlaced

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

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

ファイルの最後まで表示しますので、長いファイルでは最後しか見ることができません。
norin@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;
13
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

3.2. ファイルの表示

proc gplot;
plot b*day bh*day /overlay; run;norin@fe02 $長いファイルを画面毎にスクロール表示するには、lessコマンドを使います。
norin@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.
--------------------------------------------------------------------------MOVINGe ^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).

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

4. ディレクトリ操作

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

3.2.3. ファイルの先頭や末尾を表示する
沢山のテキストファイルの先頭だけを確認する場合など、ファイルの先頭の部分を表示するコマンドがhead です。
ファイルの末尾を見るコマンドが tail です。 tail -f オプションを使うと、ログファイルなどの末尾に追加された行を続けて表示することができます。

4. ディレクトリ操作
4.1. カレントディレクトリの移動
ログイン時の作業ディレクトリ(カレントディレクトリ)が、ホームディレクトリ(/home/login-id)です。 特定のディレクトリ配下のファイルに対して続けて作業(コマンド操作)を行う場合、ファイルが格納されているディレクトリに移動した方がパスの指定が簡単になります。
ディレクトリを移動するには cd(change directory) コマンドを使います。
$ cd 移動先のパス

SAS-BIディレクトリに移動するには、以下の様にします。
[norin@fe03 ~]$ cd SAS-BI[norin@fe03 ~/SAS-BI]$ pwd/home/norin/SAS-BI

ホームディレクトリに戻るには、 cd /home/login-id のようにしても良いですが、引数無しで cd コマ
ンドを実行すると、ホームディレクトリに戻ることができます。
[norin@fe03 ~/SAS-BI]$ cd[norin@fe03 ~]$ pwd/home/norin

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

4.2.1. ホームディレクトリ
コマンドプロンプトでも紹介しましたが、「~」(チルダ)はホームディレクトリを表しています。 どこかのディレクトリで作業を行っている時に、ホームディレクトリ配下のディレクトリに移動したり、ファイルにアクセスするときなどに使います。 (単にホームディレクトリに戻るだけなら、引数無しの cd
コマンドで可能です。)
15
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

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

例えば、 SAS-BI ディレクトリから、ホームディレクトリ配下の lfs ディレクトリに移動するには、以下の様にします。
[norin@fe03 ~/SAS-BI]$ cd ~/lfs

4.2.2. 1つ上位のディレクトリ
「..」(ピリオドを2つ続けた記号)は、カレントディレクトリの1つ上のディレクトリを表します。
例えば、カレントディレクトリを1つ上のディレクトリに移動するには、以下の様にします。
[norin@fe03 ~/SAS-BI]$ cd ..
[norin@fe03 ~]$ pwd/home/norin「/」(スラッシュ)を組み合わせてディレクトリを上位にたどって行くことができます。
例えば、2つ上位のディレクトリに移動するには、以下の様にします。
$ cd ../..

4.2.3. カレントディレクトリ
「.」(ピリオド1つ)は、カレントディレクトリを表します。
この「.」は、ファイルのコピーや移動先にカレントディレクトリを指定する際に使ったり、シェルス
クリプトやプログラムの実行のときにプログラムファイルを指定する場合に使います。
例えば、SAS-BI/milk.sas7bdat ファイルを、カレントディレクトリにコピーする際に、絶対パスではな
く「.」を使うことができます。
[norin@fe03 ~]$ cp SAS-BI/milk.sas7bdat .

4.2.4. 直前の作業ディレクトリ
cd コマンドは、引数に「-」を指定すると1つ前にいたディレクトリに戻ることができます。 これを使うと、2つのディレクトリを行ったり来たりすることができます。
[norin@fe03 ~]$ cd SAS-BI/[norin@fe03 ~/SAS-BI]$ cd ../lfs[norin@fe03 ~/lfs]$ cd [norin@fe03 ~/SAS-BI]$ cd [norin@fe03 ~/lfs]$

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

4. ディレクトリ操作

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

コマンドプロンプトの表示で、ディレクトリが変わっていることが確認できます。
ただし、 cd コマンド以外では「-」を引数に指定すると、別の機能と見なされますのでご注意ください。

bash(/bin/bash)の場合、 ls ~- の様にすると、直前のディレクトリの一覧を表示することができます。 ただし、csh, tcshなどでは無効です。

4.3. ディレクトリの作成と削除
4.3.1. ディレクトリの作成
ディレクトリを作成するには、 mkdir コマンドを使います。
$ mkdir 作成するディレクトリのパス

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

また、 Data ディレクトリとその配下に 2009 ディレクトリを一気に作成するには、 -p オプションを使って、以下の様に実行します。
[norin@fe03 ~]$ mkdir -p Data/2009[norin@fe03 ~]$ ls Data2009

4.3.2. ディレクトリの削除
ディレクトリを削除するには、rmdirコマンドを使います。
rmdir で削除するディレクトリ配下には、ファイルが無いことが前提です。(ファイルがあると削除できません)[norin@fe03 ~]$ rmdir Data/
rmdir: Data/: Directory not empty[norin@fe03 ~]$ rmdir Data/2009/[norin@fe03 ~]$ rmdir Data/

この例の1行目では、 Data ディレクトリに 2009 ディレクトリがある(ディレクトリが空ではない)ために、削除できませんでした。

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

PublicUNIX(Linux) 入門

4.4. ファイル属性

4.4. ファイル属性
4.4.1. 隠しファイル属性
ls コマンドで -a オプションを使うと、通常表示されない . (ドット) で始まるファイル(隠しファイル)が表示されます。 隠しファイルは、通常表示する必要のない設定ファイルなどが多く、ドットファイルとも呼ばれています。
.bashrc や .profile などの設定ファイルで、システムの利用環境などが設定されます。

4.4.2. ディレクトリの属性
ls コマンドで -F オプションを使うと、ディレクトリと通常ファイルを区別して表示します。 ディレク
トリ名の後ろには / (スラッシュ)が表示され、通所のファイルとは区別されています。
-a オプションと組み合わせて ls -aF とすると、 ./ や ../ というディレクトリが表示されます。 これがカレントディレクトリを表す「.」と、1つ上位のディレクトリを表す「..」になります。
ls コマンドに -l オプションを使うと、詳細なファイルリスト情報が表示されますが、最初が「d」で始まるファイルがディレクトリで、「-」で始まるのが通常のファイルです。 その後に続く文字「rw-rwr」などは、許可属性(パーミッション)で、ファイルの所有者、グループ、その他のユーザに対するr(read:読み込み) 、 w(write:書き込み) 、 x(execute:実行) 権限の有無を表しています。 ディレクト
リに対する実行権限とは、そのディレクトリをカレントディレクトリとすることを許可する権限となります。
$ ls -alF unix-start/
合計 96
drwxr-x--- 2 norin users 4096
drwx------ 120 norin users 20480-rw-r----1 norin users 7116
-rwxr----1 norin users 1458
-rw-r----1 norin users
90-rwxr-x--1 norin users 17432

5月 31 09:53 ./6月 1 13:17 ../5月 31 16:06 amedas-kion.png
5月 31 09:37 amedas-kion.sh*
5月 31 09:41 hello.c
5月 31 09:42 hi*

5. ファイルのコピー、移動、削除
5.1. ファイルのコピー cp(copy)
ファイルをコピーするには、「cp」コマンドを使います。
引数には、「コピー元」「コピー先」の順に指定します。コピー先にファイル名を指定すると、その名前でファイルの複製が作成されます。 コピー先にディレクトリを指定すると、そのディレクトリ配下にコピー元と同じ名前のファイル名でコピーされます。

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

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

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

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 ファイル名」とします。 複数のファイルを指定することができます。
ディレクトリを再帰的に(ディレクトリ内のファイルを含めて全て)削除する場合は、 -r オプションを使います。

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

PublicUNIX(Linux) 入門

6.1. 任意の文字列「*」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文字のファイル一覧を表示するには、以下の様にします。
$ ls [cfs]*.???
cow2b.log
cow-test1.sas
cow2b.sas
file.out

sas.logsas1.fonts.txt

sasprt.pdf
sasprt.png

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

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

cow2.giffork.txt

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

sasgraph.png

文字を範囲指定する場合は、「-」ハイフンを使います。 例えば、数字で終わるファイルの一覧を表示
するには、以下の様にします。
$ ls *[0-9]index.html.1
java.log.16134

sas-proc.200907080900
sas-proc.20090707

STDIN.o1360
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

cal コマンドの結果は画面には表示されず、 Jan.2017 ファイルに格納されました。 cat コマンドで、
Jan.2017 ファイルを表示すると、カレンダーが表示されます。
「>」の記号を2つ続けて「>>」とすると、ファイルの最後に追加されます。
$ cal 2 2017 >> Jan.2017$ cat Jan.2017
January 201721
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

7.2. リダイレクション

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 45 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 と言うコマンドは、通常キーボードからの入力によって計算を行います。
[norin@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[norin@fe03 ~]$次に、 keisan.txt というファイルに、計算式を保存します。 ファイル作成には、cat コマンドと標準
出力リダイレクションを使います。 ファイルを指定せずに cat コマンドを実行すると、標準入力からの入力待ちの状態になり、入力された文字列をオウム返しのように画面に表示します。 この画面出力をファイルにリダイレクションします。
[norin@fe03 ~]$ cat > keisan.txt
5+91248*563

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

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

7.2. リダイレクション

CTRL+D (Ctrl キーを押しながら d を押す)
[norin@fe03 ~]$ cat keisan.txt
5+91248*563[norin@fe03 ~]$標準入力リダイレクションを使って、計算を実行してみます。
[norin@fe03 ~]$ bc < keisan.txt
14702624[norin@fe03 ~]$計算結果が画面(標準出力)に表示されます。
リダイレクションを使わずに bc keisan.txt とすると、計算は実行されますが、入力待ちの状態になります。 quit で bc を終了します。
[norin@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’.
14702624
quit (入力待ち状態になる。quit で bc を終了します。)

7.2.3. 標準エラーのリダイレクション
エラーや警告のメッセージは通常「標準エラー」に出力され、標準出力と同様に画面に表示されます。
標準エラーをリダイレクトするには、「2>」という記号を使います。
コマンド 2> ファイルのパス標準出力と標準エラーを1つのファイルに保存するには、以下「&>」の様にします。
コマンド &> ファイルのパス

7.2.4. ファイルディスクリプタ
標準エラーのリダイレクションで指定した番号2は、ファイル記述子(ファイルディスクリプタ)と呼ばれる番号で、標準入力は「0」、標準出力は「1」、標準エラーは「2」が割り当てられています。

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

PublicUNIX(Linux) 入門

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

7.3. パイプ (コマンドを接続する)コマンドの実行結果を画面(標準出力)に出力しないで、直接、他のコマンドの入力に受け渡すことができます。 この機能を「パイプ」と言い、「|](縦棒記号)」を使います。
$ echo ”4*a(1) ” | bc -l
3.14159265358979323844

ここで、 echo "4*a(1)" は、「4*a(1)」という文字列を画面に表示するコマンドです。 これを bc コマ
ンドの入力に渡すことで、計算結果が画面に表示されます。



bc の -l オプションは、数学ライブラリを読み込むオプションです。また、 a(x) は、
ATAN (アークタンジェント) 関数です。

この様に「|」記号を挟んで複数のコマンドを連結することで、複雑な処理を行う事ができます。
例えば、文字コードがShift-JISやEUCなどのファイルを、文字コード変換コマンド(nkf)を使って変換
し、 1画面ずつ表示するページャ(less)に渡すことで、 UTF-8の画面でも文字化けすることなくファイ
ルを確認することができます。
[norin@fe03 ~]$ nkf -w sas-prog-test.log | less1
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 isrecommended 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(vim)プログラムやデータなどのテキストファイルを編集するため、テキストエディタ(単にエディタとも言う)を使うことがあります。
vi は、UNIX(Linux) で使われる標準的な(ほとんど全てのUNIXに入っている)エディタです。 vi には 「
ノーマルモード」 と 「挿入モード」 があり、 多くのコマンドがあるため、 初心者にはわかりづらく、とっつきにくい印象ですが、慣れてくれば素早くファイル編集ができる ツールとして活用でき、 vi の操作を習得することは大変有用です。

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

8. テキストエディタ vi(vim)

8.1. ファイルのオープン (起動)Linux では、 vi の機能を拡張した vim (Vi IMproved) が標準の vi に置き換えられていることが多くなっています。 vim が導入されていない場合や、システムの環境設定によって、基本的な機能のみで動作する vi が起動するようになっている場合もあります。
vi が vim に置き換わっている。(シンボリックリンク)
norin@fe03 $ which vi/usr/bin/vi
norin@fe03 $ ls -l /usr/bin/vi
lrwxrwxrwx 1 root root 8 12月 12014 /usr/bin/vi -> /bin/vim

UNIXで人気のあるエディタとして、 emacs というエディタもあります。 また、Windowsのメモ帳(notepad) の様な GUI のエディタもありますが、ターミナル(端末)からリモートで操作を行うには、
vi(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 とタイプします。 終了と保存を同時 にするには、
25
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

8.3. 基本的な編集操作:wq とタイプします( :wq と ZZ は同じ)。
編集した内容がめちゃくちゃで、最初から編集をし直したい場合は、 :e! としてファイルを再読込しま
す。 また、編集内容を破棄して強制終了するには、 :q! とします。

8.3. 基本的な編集操作
8.3.1. カーソルを移動する
viでカーソルを移動するには、「j」「k」「l」「h」キーを使います。
k キーは上方向に移動します。
↑
h キーは左方向に移動します。
kl キーは右方向に移動します。 ← hl →j キーは下方向に移動します。
j↓8.3.2. 文字を入力する
vi は「ノーマルモード」と「挿入モード」があります。 挿入モードにするには何通りかの方法がありますが、一番標準的なコマンドは、 i を押すやり方です。
i は表示されませんが、一番下の行が -- INSERT -- に変わり、これを押した後にタイプした文字が全て画面に入力されるようになります。
次の操作(カーソルを移動する場合も) をしたい場合は、 Esc キーを押してノーマル モードに戻ります。
表 4. vi 入力モードに関連するコマンド
コマンド

内容

a

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

A

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

i

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

I

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

o

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

O

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

8.4. テキスト削除
削除コマンド x を使うと、カーソル位置のテキストを削除します。 単語単位削除は dw 、行削除は dd を26
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

8. テキストエディタ vi(vim)

8.5. vimチュートリアル

使います。
さらに、これらのコマンドの前に数字を入力すると、コマンドの対象範囲が指定できます。 例えば、
2x は 2 文字、 2dw は 2 word、 2dd は 2 行の削除となります。

8.5. vimチュートリアル
基本的な使い方については、vimのチュートリアルで学習することができます。 vimtutor ja としてチュートリアルを起動します。
$ 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 も標準で文字コードの自動判別や変換に対応しているのですが、自動判別を有効にするには、

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

PublicUNIX(Linux) 入門

8.6. vim関連情報.vimrc を設定する必要があります。
科学技術計算システムのフロントエンドサーバは、 LANG=ja_JP.UTF-8 になっています。 EUC や SJISのプログラムやデータを使うには UTF-8 にする必要があります。
WindowsなどSJISで作成したプログラムやデータを vim で確認したり編集したりする場合に、文字コードの自動判別や変換ができると大変便利になります。
文字コードと改行コード自動認識の設定~/.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=文字コード

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

9. ネットワークの利用

9.1. リモートログイン SSH (Secure Shell)vim でファイルを開き、ˆM という文字が表示される場合、改行コードを変更してファイルを開き直します。
:e ++ff=改行コード

9. ネットワークの利用
手元のコンピュータ(ローカルホスト)から、ネットワークに接続されている別のUNIX(Linux)コンピュータ(リモートホスト)に、ログインして操作する主なコマンドについて説明します。

9.1. リモートログイン SSH (Secure Shell)
SSH : Secure SHell (セキュアシェル)は、ネットワークを通じて別のコンピュータにログインしたり、コマンドを実行したり、ファイルを転送するためのロトコル(規約)、あるいはその実装プログラムです。
ネットワークを流れるデータは暗号化されるため、インターネット経由でも一連の操作を安全(盗聴や成りすましに対して安全)に行うことができます。
macOSは、UNIX(BSD系)を基本技術の一つとして作られており、これから説明するsshコマンド(OpenSSHのコマンドが利用可能)などの操作をターミナルから行う事ができます。
sshによるリモートログインには、「パスワード認証」と「公開鍵認証」の2つの方法があります。 こ
こでは、パスワード認証について説明します。
リモートログインを行うコマンドは、ssh (slogin) です。
$ ssh login-id@remote.host.jp または、
$ ssh -l login-id remote.host.jp
login-id@remote.host.jp’s password: <== ここにパスワードを入力

接続すると、パスワードの入力を求めてきますので、パスワードを入力します。 入力したパスワードは表示されません。
接続元(ローカルホスト)のログイン名と、接続先(リモートホスト)のログイン名が同じであれば、loginidの指定を省略できます。
norin@norin-desktop:~$ ssh scion.cc.affrc.go.jp
norin@scion.cc.affrc.go.jp’s password:

ローカルホストとリモートホストの日本語環境が異なる場合は、ログイン先環境の環境に合わせて、端末ソフトの設定を変更する必要があります。

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

PublicUNIX(Linux) 入門

9.2. ファイル転送 scp, sftp

• OpenSSH (Open Secure Shell) は、OpenBSDプロジェクトにより開発が行われ、 BSDライセンスで公開されているSSHプロトコルを利用するためのソフトウ

ェアで、SSHサーバおよびSSHクライアントを含みます。
• リモートログインを行うコマンドとしては、sloginの方が本来のコマンドですが、sshとsloginの実態は同じプログラムです。

windows用ssh対応ターミナルソフト
Windows PC で使える ssh に対応したターミナル (端末) ソフトを紹介します。
PuTTY
Simon Tatham 氏によって作成された、フリーの Telnet/SSH クライアントです。
• https://www.chiark.greenend.org.uk/~sgtatham/putty/index.html• https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Tera Term
TeraTerm は、原作者の寺西高氏から、TeraTerm Project に開発が引き継がれ公開されている SSH に対応したターミナルエミュレータです。
• https://ttssh2.osdn.jp/

9.2. ファイル転送 scp, sftp
SCPは、遠隔のコンピュータとローカルのコンピュータ間でファイル転送を行うプログラムです。
SFTPは、SCP同様にファイル転送を行いますが、FTPと同様の使い方ができます。 どちらの場合も通信は暗号化されますので、ネットワーク上の盗聴などに対して安全です。

9.2.1. scp
基本的な使い方は、cp (コピー) コマンドと同じですが、リモートのファイルを指定する場合は、「ユーザ名@ホスト名:」が入ります。
: (コロン)の後のファイル名は、ホームディレクトリからの相対パスか、ルート(/)からの絶対パスで指定します。
scp [user@host1:]file1 [user@host2:]file2
scp コピー元ファイル名 コピー先ファイル名

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

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

9. ネットワークの利用

9.2. ファイル転送 scp, sftp

$ scp program.f login-id@remote.host.jp:test/prog/

リモートホストからパソコンへ(最後の「 . 」は、カレントディレクトリを示す)$ scp login-id@remote.host.jp:test/prog/program.f .

ディレクトリ配下を全てコピーする(作成日時やパーミッション変更無し)$ scp -rp login-id@remote.host.jp:/hoem/login-id/test/ .

9.2.2. sftp
sftpは、ftpと同様に対話的な操作ができます。 一度の接続で複数のファイルや双方向のファイル転送を行う場合は、sftpが便利です。
$ sftp login-id@remote.host.jp
Connecting to remote.host.jp...
login-id@remote.hoet.jp's password: <== ここにパスワードを入力
sftp >

パスワードを入力し、認証に成功すると 「 sftp >」と表示したら、コマンドを入力して操作します。
終了するには、quit (bye, exitでもよい)と入力します。
表 5. sftpの主なコマンド
コマンド

機能

quit

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

put

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

get

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

cd

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

ls

リモートのファイル一覧

pwd

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

rm

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

rmdir

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

lcd

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

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

PublicUNIX(Linux) 入門

コマンド

9.3. SSH公開鍵認証

機能

lls

ローカルのファイル一覧

lpwd

ローカルのカレントディレクトリを表示!commandローカル上のcommandを実行

sftpのGUIツール
sftpをGUIで操作するツールがあります。
Windows系• WinSCP (https://winscp.net/eng/docs/lang:jp)• FFFTP (https://ja.osdn.net/projects/ffftp/)
Mac• Cyberduck (https://cyberduck.io/index.html)
Linux• gFTP (https://www.gftp.org)

9.3. SSH公開鍵認証
パスワード認証と比較して、よりセキュアな公開鍵認証を利用する手順を紹介します。
• 自分の認証キー (秘密鍵と公開鍵のペア) を生成します。
• 接続するホストに公開鍵を登録します。
• ssh -i [認証キー(秘密鍵)] [login-name]@[server-name] コマンドの -i オプションで、秘密鍵の場所 (~/.ssh/id_ed25519 など) を指定して接続します。
• 接続先ホストのユーザ環境に公開鍵が登録されている場合、秘密鍵と照合されます。 秘密鍵を 参照
するには、パスフレーズの入力が必要です。
科学技術計算システムへのログインは、公開鍵認証(パスワード認証不可)になりました。



科学技術計算システムでは、公開鍵登録用の専用Webサイトで登録を行います。
パスワード認証を禁止しているサーバについては、それぞれのシステムで公開鍵登録の方法が異なりますので、管理者に確認してください。 (公開鍵をメールやファイルなどで管理者あてに送り、管理者が登録するといった方法もあります)32
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

9. ネットワークの利用

9.3. SSH公開鍵認証

9.3.1. SSH秘密鍵と公開鍵の生成
ssh(OpenSSH) の ssh-keygen コマンドを使って、SSH鍵を生成します。
リスト 4. SSHキーペアの生成(ssh-keygenコマンド)% ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/norin/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ed25519
Your public key has been saved in id_ed25519.pub
The key fingerprint is:
SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy norin@pc-22007
The key's randomart image is:+--[ED25519 256]--+| .+..
..
||o . o... . ||o = O. + ||. B & *o . ||o S # o ||+ @ =. .E.||
* = .o ..||. + o . ||o|+----[SHA256]-----+

①
②
③
④

⑤

① ssh-keygen コマンドでキーを生成します。 オプション -t ed25519 で鍵の種類を ED25519 に指定します。 鍵の種類は、ED25519 をお勧めします。
② 生成する鍵ファイルの格納ディレクトリとファイル名を指定します。 (デフォルトならば、 Enter キーを押す)③ 鍵に設定するパスフレーズを入力します。 (必ずパスフレーズを設定してください。)④ 確認のため、パスフレーズを再入力します。
⑤ 生成した鍵のフィンガープリント (鍵のハッシュ値) が表示されます。
リスト 5. 生成したキーファイル% ls -l ~/.ssh
total 48-rw------- 1 norin-rw-r--r-- 1 norin

①
staff
staff

464
105

4 18
4 18

2021 id_ed25519
2021 id_ed25519.pub②③① 生成した鍵ファイルは、ホームディレクトリ(/Users/[ユーザ名]/)配下の .ssh ディレクトリに保存されます。 (~/ は、ホームディレクトリ)② 生成された秘密鍵(ファイルのアクセス権が -rw------- になっていること。)③ 公開鍵をログイン先ホスト(サーバ)に登録します。

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

PublicUNIX(Linux) 入門

9.3. SSH公開鍵認証

生成する鍵の種類は、Ed25519 か RSA 2048 bit以上を作成してください。 楕円曲線



暗号の一つである Ed25519 をお勧めします。 (暗号強度が高く鍵長が短い)
パスフレーズを必ず入力してください。 (秘密鍵を漏洩させないことが重要ですが、漏洩した場合に、なりすましを防止します。)

9.3.2. 公開鍵の登録
科学技術計算システムでは、公開鍵登録用の専用Webサイトで登録を行います。
保存した公開鍵(id_ed25519.pub)は、OpenSSH形式ですので、 cat コマンドなどで表示し、 コピー&
ペーストして登録することができます。
リスト 6. catコマンドで公開鍵を表示% cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy norin@pc-22007



パスワード認証を禁止しているサーバについては、それぞれのシステムで公開鍵登録の方法が異なりますので、管理者に確認してください。 (公開鍵をメールやファイルなどで管理者あてに送り、管理者が登録するといった方法もあります)

システムログイン端末による公開鍵の登録(パスワード認証が許可されている場合)
パスワード認証が許可されているシステムの場合は、次の方法で公開鍵を登録することが可能です。
• ターミナルなどから ssh [login-id]@[server-name] コマンドで接続し、パスワード認証でホストにログインします。
• テキストエディタや別のターミナルなどで表示(% cat ~/.ssh/id_ed25519.pub)した公開鍵をコピーして、 .ssh/authorized_keys に追加します。
• 端末上のコマンドは、以下のようにします。(一行で入力します)[norin@fe01 ~]$ echo "ssh-ed25519
AAAAyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy norin@pc-22007" >>~/.ssh/authorized_keys◦ echo " まで入力し、コピーした公開鍵をペーストします。
◦ 続けて " >> ~/.ssh/authorized_keys と入力して、エンターキーを押す。
• cat コマンドで、登録された authorized_keys を確認します。
[norin@fe01 ~]$ cat ~/.ssh/authorized_keys
ssh-ed25519 AAAAyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy norin@pc22007

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

9. ネットワークの利用

9.3. SSH公開鍵認証• ファイルパーミッション (アクセス権限) に注意してください。
[norin@fe01 ~]$ ls -l .ssh
合計 30
-rw------- 1 norin research100

4月 13 11:04 authorized_keys◦ authorized_keys のアクセス権限が -rw------- の様になっていない場合は、 chmod 600.ssh/authorized_keys としてください。
• 設定を確認したらログアウトしてください。

9.3.3. 公開鍵認証によるログインとファイル転送
コマンドによるSHH公開鍵認証によるログイン
リモートのシステムには、事前にローカル(PC)で作成した公開鍵を登録しておきます。(前項参照)• ターミナルから ssh -i [秘密鍵のPATH] [login-id]@[server-name] コマンドで接続し、秘密鍵を開くためのパスフレーズを入力します。
(秘密鍵が標準のPATH(~/.ssh/id_ed25519 など)であれば、 -i [秘密鍵の場所] の指定を省略できます。)% ssh -i ~/.ssh/id_ed25519 norin@scion.cc.affrc.go.jp
Enter passphrase for key '/Users/norin/.ssh/id_ed25519':
Last login: Thu May 26 14:29:29 2022 from 150.26.201.116[norin@fe03 ~]$<< パスフレーズ入力

SSH公開鍵認証によるファイル転送(SCP)
scp コマンドによるファイル転送• ローカル(PC)から、リモート(サーバ)に転送% scp -i ~/.ssh/id_ed25519 amedas-kion.png norin@scion.cc.affrc.go.jp:unix-start/
Enter passphrase for key '/Users/norin/.ssh/id_ed25519':<< パスフレーズ入力
amedas-kion.png
100% 7116
1.0MB/s

00:00• リモート(サーバ)から、ローカル(PC)に転送% scp -i ~/.ssh/id_ed25519 norin@scion.cc.affrc.go.jp:unix-start/amedas-kion.png .
Enter passphrase for key '/Users/norin/.ssh/id_ed25519':<< パスフレーズ入力
amedas-kion.png
100% 7116
3.1MB/s
00:00• リモート(サーバ)から、ローカル(PC)に転送(ディレクトリ配下)% scp -i ~/.ssh/id_ed25519 -rp norin@scion.cc.affrc.go.jp:unix-start .
Enter passphrase for key '/Users/norin/.ssh/id_ed25519':<< パスフレーズ入力

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

PublicUNIX(Linux) 入門

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

hikisu.shamedas-kion.shscript1.sh
amedas-kion.png
hello.cscript2.sh
hello.f90

100%
48
100% 1458100%
77
100% 7116
100%
90
100%
82
100%
34

17.5KB/s
572.5KB/s
28.8KB/s
3.1MB/s
44.7KB/s
34.0KB/s
13.3KB/s

00:00
00:00
00:00
00:00
00:00
00:00
00:00

10. シェルスクリプト
ユーザがタイプしたコマンドライン操作は、シェルというプログラムで解釈され、実行されて結果を画面に表示します。
同じようなコマンド操作を繰り返したり、一連の操作を行いたいときに、その操作手順を登録しておくと便利です。 複数のコマンドが連続して動作するように、実行手順をあらかじめファイルに記述しておいたものが「シェルスクリプト」です。 また、シェルスクリプトは、変数や分岐処理などプログラミン
グ言語としても利用できます。



スーパーコンピュータのような共同利用のシステムでは、計算機資源を各ユーザに割り当てるジョブスケジューラ(バッチジョブ管理システム)でプログラムを実行する際に、プログラムの実行環境や実行手順を記述したシェルスクリプトを使います。

10.1. シェルスクリプトの書き方と実行
ここでは、Bシェル系(sh, bash)のシェルスクリプトについて、説明します。
シェルスクリプトは、テキストファイルとして作成します。 例として、script1.sh という名前で、以下の内容のファイルをviなどのエディタを使って作成します。
リスト 7. script1.sh#!/bin/sh
date
pwd
echo "I am $USER"
echo '4*a(1)' | bc -l
cal `date '+%Y'`

1行目の「 #!/bin/sh 」は、「 #! 」に続く部分のプログラムでスクリプトが実行されます。
2行目以降は、スクリプトで実行されるコマンドです。
datepwd
echo "I am $USER"
echo '4*a(1)' | bc -l

システムの日時を表示するコマンド
カレントディレクトリを表示するコマンド
echo コマンドは、文字列を表示するコマンド
パイプやリダイレクションも使うことが出来ます36
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

10. シェルスクリプトcal `date '+%Y'`

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

カレンダーを表示するコマンド$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コマンドを使います。
$ ls -l script1.sh-rw-r--r-- 1 norin norin$ chmod u+x script1.sh$ ls -l script1.sh-rwxr--r-- 1 norin norin

87 2010-01-05 11:24 script1.sh

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/norin
I am norin

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

PublicUNIX(Linux) 入門

10.2. 変数

3.14159265358979323844
2017
January
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
Su Mo Tu We Th Fr Sa
1 2 3 45 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28March
Su Mo Tu We Th Fr Sa
1 2 3 45 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

November
Su Mo Tu We Th Fr Sa
1 2 3 45 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

December
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-- 中略 -October
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 3110.1.2. コメント
他のプログラミング言語と同様にシェルスクリプトでも、行頭に「#」を記述してコメントを入れることができます。
リスト 8. script2.sh#!/bin/sh# これはコメントです。
echo "これは表示されます。"

このスクリプトを実行すると、以下の様になります。
$ ./script2.sh
これは表示されます。

10.2. 変数
変数とは一時的に文字や数字などの値を入れて記憶します。変数を指定することで、値を記憶させた
り、取り出して使います。
シェルの変数には、「シェル変数」と「環境変数」があります。

10.2.1. シェル変数
シェル変数は、実行中のプロセス(シェルやコマンド、シェルスクリプト)の内でのみ有効な変数です。

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

10.3. 引数

10. シェルスクリプト

シェルスクリプトから起動するコマンドやスクリプトは、 [シェル変数] を参照することはできません。
変数に値を代入するには、以下の様にします。 値に何も指定しない場合は、変数は定義されますが、値は何もない(NULL)状態になります。
$ My_Name=Hattori$ echo $My_Name
Hattori$ My Name=$ echo $My Name$

10.2.2. 環境変数
環境変数は、シェルのプロセスおよびその子プロセスで有効な変数です。シェルから起動した他のコマ
ンドやシェルスクリプトなどに変数を引き渡す場合は、環境変数を使う必要があります。
定義したシェル変数を環境変数に切り替えるには、exportコマンドを使います。
$ My_Name=Hattori$ export My_NameCシェル系は、setenvコマンドを使います。 値に指定(書式)も異なりますので注意してください。

10.3. 引数
コマンドと同様に、シェルスクリプトの後にファイル名などを引数として指定することができます。

10.3.1. 位置パラメータ
シェルスクリプトの引数は、「位置パラメータ」と呼ばれる特殊な変数に代入されます。 この位置パラメータを参照することで、引数の値をシェルスクリプトで使うことができます。
位置パラメータは、「$0」「$1」「$2」「$3」……「$10」…… のように表され、「$0」には、実行したシェルスクリプト自身が代入され、「$1」以降に指定した引数が順に代入されます。
リスト 9. hikisu.sh#!/bin/shecho "0=$0 1=$1 2=$2 3=$3 4=$4 5=$5"

このシェルスクリプトに引数を指定して実行すると、以下のようになります。

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

PublicUNIX(Linux) 入門

10.4. サンプルスクリプト$ ./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. サンプルスクリプト
簡単なサンプルスクリプトを例に、もう少し説明します。
この例では、気象（アメダス）データを取得し、グラフを作成する手順をスクリプトにしています。 実
際には、欠測値の取り扱いなどを考慮する必要があります。
リスト 10. amedas-kion.sh#!/bin/sh
CHITEN=40336
YEAR=2022
MONTH=04# 40336=つくば つくば市長峰# 取得データの年# 取得データの月

高層気象台

FILE="AR$YEAR$MONTH.$CHITEN.csv"# リアルタイムアメダスのファイル名
DIR="/NDB/data/provide_data/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"40
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

10. シェルスクリプト

10.4. サンプルスクリプト} >>amedas-kion.dat# gnuplotでグラフを作成する
gnuplot amedas-kion.dat# 一時データファイルを削除
rm amedas-kion.dat

このサンプルを実行するには、 gnuplot などがインストールされている必要があります。
スクリプトの動作については、コメントに記述しています。 各コマンドの詳細は、マニュアルやインターネット上の情報を参照してください。
データファイル
科学技術計算システムのフロントエンドサーバでは、気象データなどの数値デー
タが「/NDB」配下にあります。

gnuplot
gnuplot (ニュープロット)は、グラフを作成するためのフリーソフトウェアで、Linux, UNIX, Windows, macOSなど、多くの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
終了文字

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

Public10.5. 参考

UNIX(Linux) 入門

10.4.2. コマンド中の改行
nkfから始まるデータ変換を行うコマンドは、パイプを使って幾つかのコマンドをつなげているため、長い1行のコマンドとなりますが、見やすくするために途中で改行しています。
次の行が続きの行であることを認識させるために、 \ (バックスラッシュ)を使います。
nkf -w $FILE | grep ^$CHITEN | cut -d',' -f2,6 \| tr "," "\t"Windows系では、￥(円マーク)と表示されます。

10.4.3. 実行結果のグラフ
このスクリプトを実行して作成したグラフを以下に示します。

図 2. 気温データのグラフ

10.5. 参考
他のプログラミング言語と同様にシェルスクリプトには、 if, test, case などの条件判別や分岐処理、
for, while などの繰り返しループ処理などがあり、高度なプログラムを作ることができます。 ここでは紹介できませんので、インターネット上の情報や書籍等を参考にしてください。

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

11. プログラムの利用

11.1. コンパイラ

10.5.1. インターネット上の情報• シェルスクリプト入門
http://hocolamogg.com/unix/shellscript/index.html• シェル・スクリプト・リファレンス INDEX
http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230580/• UNIX & Linux コマンド・シェルスクリプト リファレンス
http://www.geocities.jp/geo_sunisland/

10.5.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環境は、標準ではインストールされていないことが多い。開発環境を追加イ

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

PublicUNIX(Linux) 入門

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

ンストールすることで利用可能となる。
• 科学技術計算システムには、GCCの他に、商用の開発環境として Intel の C, C++,
Fortran コンパイラなどが導入されています。
GCC には、 C, C++, Objective-C, Fortran, Java と、それらのライブラリ群が含まれています。



ライブラリ: 汎用性の高い複数のプログラムを、再利用可能な形でまとめたもの。

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. コンパイル済みプログラムの実行
コンパイルに成功すれば、実行形式のプログラム(バイナリーコード)が作成されるので、ファイル名を指定して実行します。
プログラム実行中にエラーが発生したり、想定した動作をしない場合は、手順１に戻り、プログラ
ムの修正を行います。

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

11. プログラムの利用

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

Fortranは、言語の規格が変更され Fortran77, Fortran90, Fortran95 などがあり、



ソースコードファイルの拡張子やコンパイルオプションで、それぞれの書式に対応しています。 Fortran77は、構造化プログラミングができないなどの問題があります。
古いプログラムをコンパイルするためのオプションと言えます。



この作業をエラーが無くなるまで繰り返します。これをデバッグ(Debug)と言います。

11.3. Cプログラムの作成と実行
C言語を使った簡単なプログラミングを説明します。

11.3.1. ソースコードの作成
viなどのエディタを使って、以下のプログラムを作成します。ファイル名は「hello.c」とします。
$ vi hello.c

リスト 11. 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

norin

norin

8298

2010-01-27

14:35 hi45
Copyright © Tsukuba Business-Academia Cooperation Support Center, AFFRC All right reserved.

PublicUNIX(Linux) 入門

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

11.3.3. 実行
実行形式ファイルのパスを指定して、プログラムを実行します。
$ ./hiHello World

このプログラムは、画面に「Hello World」と表示するというプログラムですので、正常に動作している ことが確認できます。

11.4. Fortranプログラムの作成と実行
C言語と同様の簡単なプログラムを作成して実行してみます。

11.4.1. ソースコードの作成
viなどのエディタを使って、以下のプログラムを作成します。ファイル名は「hello.f90」とします。
$ vi hello.f90

リスト 12. 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

norin

norin

8717

2010-01-27

15:21 hi-f

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

11. プログラムの利用

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

11.4.3. 実行
実行形式ファイルのパスを指定して、プログラムを実行します。
$ ./hi-f
Hello World

このプログラムは、画面に「Hello World」と表示するというプログラムですので、正常に動作している ことが確認できます。

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

Public