UNIX演習 情報ネットワーク特論
準備(Windowsのみ): TeraTermProのインストール 以下からファイルをダウンロード ダウンロードしたファイルを実行 言語の選択以外は、 基本的に「OK」か「next」をクリック http://sourceforge.jp/projects/ttssh2/downloads/48772/teraterm-4.67.exe
サーバへのログイン ホスト名: psihexa.cc.kyushu-u.ac.jp TeraTermの場合: ホスト名を入力し OK をクリック User name に、講義で渡した ID Passphrase に、講義で伝えたパスワード を入力して OK MacOS X, Linux の場合: ターミナルで以下のコマンドを実行 講義で伝えたパスワードを入力 (入力中は何も表示されないので注意) ssh 講義で渡したID@psihexa.cc.kyushu-u.ac.jp
初期パスワードの変更 必ず最初にパスワードを変更する [a0029@pcc001 a0029]$ yppasswd Changing NIS account information for a0029 on pcc001. Please enter old password: 初期パスワードを入力 Changing NIS password for a0029 on pcc001. Please enter new password: 新しいパスワード Please retype new password: 新しいパスワード(確認) The NIS password has been changed on pcc001. [a0029@pcc001 a0029]$
ファイル操作の準備 実習用のファイルを展開. 展開後は以下のようになる. $ ls $ tar xvf /tmp/unix1.tar ファイルの一覧 実習用のファイルを展開. 展開後は以下のようになる. ホームディレクトリ カレントディレクトリ unix1 hello.c pi.f90 pi.c pi-omp.f90 pi-omp.c mm.f90 mm.c mm-omp.f90 mm-omp.c mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-essl.f90 test.txt
作業ディレクトリの変更 カレントディレクトリを unix1に変更. $ pwd $ cd unix1 $ ls 現在のディレクトリを確認 ホームディレクトリ カレントディレクトリ unix1 hello.c pi.f90 pi.c pi-omp.f90 pi-omp.c mm.f90 mm.c mm-omp.f90 mm-omp.c mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-essl.f90 test.txt
ファイルの内容閲覧 $ less lu.f90 次のページへ: SPACE もしくは f 前のページへ: b 1行下へ: Enter もしくは j 1行上へ: k 閲覧終了: q ホームディレクトリ unix1 カレントディレクトリ hello.c pi.f90 pi.c pi-omp.f90 pi-omp.c mm.f90 mm.c mm-omp.f90 mm-omp.c mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-essl.f90 test.txt
ディレクトリの作成とファイルのコピー $ ls $ mkdir test $ cp hello.c test $ cp test.txt test $ ls test testディレクトリ作成 ファイルのコピー testディレクトリの下のファイル一覧 ホームディレクトリ unix1 カレントディレクトリ test hello.c pi.f90 pi.c pi-omp.f90 hello.c test.txt pi-omp.c mm.f90 mm.c mm-omp.f90 mm-omp.c mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-essl.f90 test.txt
ファイルの削除 $ cd test $ pwd $ ls $ rm hello.c $ rm test.txt 削除 削除 ファイルの削除 ホームディレクトリ unix1 カレントディレクトリ test hello.c pi.f90 pi.c pi-omp.f90 hello.c test.txt pi-omp.c mm.f90 削除 削除 mm.c mm-omp.f90 mm-omp.c mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-essl.f90 test.txt
複数のファイルの操作 $ cd .. $ pwd $ cp hello.c test.txt test $ ls test $ rm -ri test 全て y と答える $ ls ホームディレクトリ unix1 カレントディレクトリ test hello.c pi.f90 pi.c pi-omp.f90 hello.c test.txt pi-omp.c mm.f90 削除 mm.c mm-omp.f90 mm-omp.c mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-essl.f90 test.txt
ファイルの移動と名前の変更 $ mkdir test $ ls $ mv hello.c test.txt test $ ls test $ mv lu.f90 lu-serial.f90 ファイルの移動 ファイル名の変更 ホームディレクトリ 移動 unix1 カレントディレクトリ test hello.c pi.f90 pi.c pi-omp.f90 hello.c test.txt pi-omp.c mm.f90 mm.c mm-omp.f90 mm-omp.c 移動 mm-essl.f90 mm-essl.c lu.f90 lu-omp.f90 lu-serial.f90 ファイル名変更 lu-essl.f90 test.txt
*の利用(1) $ mkdir lu $ ls $ mv lu-* lu $ ls lu 移動 名前の先頭が lu- であるファイルを移動 ホームディレクトリ unix1 カレントディレクトリ test lu pi.f90 pi.c pi-omp.f90 hello.c lu-serial.f90 pi-omp.c test.txt mm.f90 lu-omp.f90 mm.c lu-essl.f90 mm-omp.f90 mm-omp.c mm-essl.f90 移動 mm-essl.c lu-serial.f90 lu-omp.f90 lu-essl.f90
*の利用(2) $ ls $ mkdir mm $ mv mm.* mm-* mm $ ls mm 移動 名前の先頭が mm. であるファイルと mm- であるファイルを移動 (mm* とすると mmディレクトリまで 含まれてしまう) ホームディレクトリ unix1 カレントディレクトリ test lu mm hello.c lu-serial.f90 test.txt lu-omp.f90 pi.f90 lu-essl.f90 pi.c mm.f90 pi-omp.f90 mm.c pi-omp.c mm-omp.f90 mm.f90 mm-omp.c mm.c mm-essl.f90 mm-omp.f90 mm-essl.c mm-omp.c 移動 mm-essl.f90 mm-essl.c
*の利用(3) $ cd mm $ ls $ mkdir f c $ mv *.f90 f $ mv *.c c $ ls * 移動 ホームディレクトリ unix1 カレントディレクトリ test mm lu hello.c lu-serial.f90 test.txt c f lu-omp.f90 pi.f90 mm.f90 lu-essl.f90 pi.c mm.c pi-omp.f90 mm.c mm.f90 pi-omp.c mm-omp.f90 mm-omp.c mm-omp.f90 mm-omp.c mm-essl.c mm-essl.f90 mm-essl.f90 mm-essl.c 移動
ディレクトリのコピー $ cd ~/unix1 $ ls $ ls -R $ cp -r mm mm-copy 移動 ホームディレクトリ カレントディレクトリ test mm mm-copy lu hello.c lu-serial.f90 test.txt c f lu-omp.f90 c f pi.f90 lu-essl.f90 pi.c mm.c mm.f90 pi-omp.f90 mm.c mm.f90 mm-omp.c mm-omp.f90 pi-omp.c mm-omp.c mm-omp.f90 mm-essl.c mm-essl.f90 mm-essl.c mm-essl.f90 移動
ディレクトリの移動 $ mkdir programs $ mv mm lu programs $ ls $ ls -R ホームディレクトリ unix1 カレントディレクトリ programs mm-copy test hello.c lu c f test.txt mm mm.f90 mm.c mm-omp.f90 c f mm-omp.c pi.f90 lu-serial.f90 mm-essl.f90 mm-essl.c pi.c lu-omp.f90 pi-omp.f90 mm.c mm.f90 lu-essl.f90 pi-omp.c mm-omp.c mm-omp.f90 mm-essl.c mm-essl.f90
プログラムの入力(1) 作業ディレクトリに移動 $ cd ~/unix1/test ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c lu-serial.f90 test.txt lu-omp.f90 pi.f90 mm.c mm.f90 lu-essl.f90 pi.c pi-omp.f90 mm-omp.c mm-omp.f90 pi-omp.c mm-essl.c mm-essl.f90
プログラムの入力(2) Emacsを起動し,次ページのプログラムを入力 #include <stdio.h> $ emacs -nw test.c 以下のプログラムを入力し,保存後終了. 保存コマンド: C-x C-s 終了コマンド: C-x C-c #include <stdio.h> int main() { printf("Hello World\n"); return(0); }
コンパイルと実行(1) /tmp/sample.c をコピー (まず予め入力してあったものを試す) $ cp /tmp/sample.c . $ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c lu-serial.f90 test.txt lu-omp.f90 pi.f90 mm.f90 test.c mm.c lu-essl.f90 pi.c pi-omp.f90 mm-omp.f90 sample.c mm-omp.c pi-omp.c mm-essl.c mm-essl.f90
コンパイルと実行(2) sample.c をコンパイル C言語プログラムのコンパイル: cc コマンド $ cc sample.c –o sample $ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c lu-serial.f90 test.txt lu-omp.f90 pi.f90 test.c mm.c mm.f90 lu-essl.f90 pi.c pi-omp.f90 sample.c mm-omp.c mm-omp.f90 pi-omp.c mm-essl.c mm-essl.f90 sample
コンパイルと実行(3) sample の実行 ./ を忘れない $ ./sample Welcome to the UNIX world! ./ を忘れない $ ./sample Welcome to the UNIX world! ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c lu-serial.f90 test.txt lu-omp.f90 pi.f90 mm.c mm.f90 test.c lu-essl.f90 pi.c pi-omp.f90 sample.c mm-omp.c mm-omp.f90 pi-omp.c sample mm-essl.c mm-essl.f90
コンパイルと実行(4) 自分で入力したプログラムのコンパイル エラーが出たら再編集 再編集 エラーメッセージが表示された? $ cc test.c –o test 再編集 $ emacs –nw test.c エラーメッセージが表示された? No Yes $ ./test 表示が正しくない? Yes No Congratulations!
コンパイルと実行(5) プログラムの再編集(表示内容の変更) 終わったら再度コンパイル・実行 $ emacs –nw test.c 以下のように編集し、保存後終了 #include <stdio.h> int main(void) { printf("Yesterday, \n"); printf("All my trouble seemed so\n"); printf("Far away.\n"); return(0); } Emacs の行コピー機能を利用すると便利 $ ls $ cc test.c –o test $ ./test
リダイレクションの利用(1) 準備: /tmp/sum.c のコピー $ cp /tmp/sum.c . $ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c test.txt lu-serial.f90 lu-omp.f90 test.c pi.f90 mm.c mm.f90 pi.c lu-essl.f90 test pi-omp.f90 mm-omp.c mm-omp.f90 sample.c pi-omp.c mm-essl.c mm-essl.f90 sample sum.c
リダイレクションの利用(2) sum.cのコンパイル $ cc sum.c –o sum $ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c test.txt lu-serial.f90 lu-omp.f90 test.c pi.f90 mm.c mm.f90 test pi.c lu-essl.f90 pi-omp.f90 mm-omp.c mm-omp.f90 sample.c pi-omp.c mm-essl.c mm-essl.f90 sample sum.c sum
リダイレクションの利用(3) 実行: まずキーボードから入力 $ ./sum A = ? 10 B = ? 20 実行: まずキーボードから入力 $ ./sum A = ? 10 B = ? 20 A = 10, B = 20, A + B = 30 キーボードから入力 キーボードから入力
リダイレクションの利用(4) 実行: ファイルから入力 (リダイレクト) $ less /tmp/data 中身を確認したら q で終了 実行: ファイルから入力 (リダイレクト) $ less /tmp/data 中身を確認したら q で終了 $ ./sum < /tmp/data A = ? B = ? A = 100, B = 200, A + B = 300
リダイレクションの利用(5) 実行: ファイルから入力し,ファイルへ出力 (リダイレクト) 実行: ファイルから入力し,ファイルへ出力 (リダイレクト) $ ./sum < /tmp/data > out $ less out ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c test.txt lu-serial.f90 lu-omp.f90 test.c pi.f90 mm.c mm.f90 test pi.c lu-essl.f90 pi-omp.f90 mm-omp.c mm-omp.f90 out sample.c pi-omp.c mm-essl.c mm-essl.f90 sample sum.c sum
リダイレクションとパイプラインの利用 実行: 出力を次のコマンドの入力とする (パイプライン) 実行: 出力を次のコマンドの入力とする (パイプライン) $ ./sum < /tmp/data | tail –1 $ ./sum < /tmp/data | tail –1 > out $ less out tail コマンド: ファイルの末尾から指定した行数分を表示する. tail –行数 ファイル名 ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c test.txt lu-serial.f90 lu-omp.f90 test.c pi.f90 mm.c mm.f90 test pi.c lu-essl.f90 pi-omp.f90 mm-omp.c mm-omp.f90 out sample.c pi-omp.c mm-essl.c mm-essl.f90 sample sum.c sum
パイプラインの利用 1画面に表示しきれない出力をページ毎に表示 $ ls -lR | less カレントディレクトリ ホームディレクトリ unix1 programs test pi mm lu c f c f hello.c test.txt lu-serial.f90 lu-omp.f90 test.c pi.f90 mm.c mm.f90 test pi.c lu-essl.f90 pi-omp.f90 mm-omp.c mm-omp.f90 out sample.c pi-omp.c mm-essl.c mm-essl.f90 sample sum.c sum
ログアウト 必ず以下を実行してログアウトする $ exit