UNIX演習 情報ネットワーク特論資料
教育用クラウド上のサーバを用意 教育用クラウド: https://vcl.qc.kyushu-u.ac.jp/ ログイン後、「新規予約」 学生IDを使ってログイン ログイン後、「新規予約」 「継続時間」を選択して、「予約」 「接続!」が表示されるまで待って、クリック 「リモートコンピュータ」に表示されるアドレスに、 学生IDとパスワードを使ってログイン Windowsの場合、Putty等 MacOS X の場合、「ターミナル」で sshコマンド
実習用ファイルを取得し、 サーバにアップロード 講義ページにある unix.tar をダウンロード ファイル転送ソフト等を使って、教育用クラウド上に確保したサーバへアップロード Windowsの場合、 WinSCP MacOS Xの場合、 「ターミナル」で scpコマンド
ファイル操作の準備 実習用のファイルを展開. 展開後は以下のようになる. $ ls $ tar xvf unix.tar ファイルの一覧 ホームディレクトリ カレントディレクトリ unix dat hello.c lu.f90 lu-omp.f90 mm-omp.c mm-omp.f90 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90 test.txt
作業ディレクトリの変更 カレントディレクトリを unix1に変更. $ pwd $ cd unix $ ls 現在のディレクトリを確認 ホームディレクトリ カレントディレクトリ unix dat hello.c lu.f90 lu-omp.f90 mm-omp.c mm-omp.f90 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90 test.txt
ファイルの内容閲覧 $ less lu.f90 次のページへ: SPACE もしくは f 前のページへ: b 1行下へ: Enter もしくは j 1行上へ: k 閲覧終了: q ホームディレクトリ unix カレントディレクトリ dat hello.c lu.f90 lu-omp.f90 mm-omp.c mm-omp.f90 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90 test.txt
ディレクトリの作成とファイルのコピー $ ls $ mkdir test $ cp hello.c test $ cp test.txt test $ ls test testディレクトリ作成 ファイルのコピー testディレクトリの下のファイル一覧 ホームディレクトリ unix カレントディレクトリ test dat hello.c lu.f90 lu-omp.f90 hello.c test.txt mm-omp.c mm-omp.f90 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90 test.txt
ファイルの削除 $ cd test $ pwd $ ls $ rm hello.c $ rm test.txt 削除 削除 ファイルの削除 ホームディレクトリ unix カレントディレクトリ test dat hello.c lu.f90 lu-omp.f90 hello.c test.txt mm-omp.c mm-omp.f90 削除 削除 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90 test.txt
複数のファイルの操作 $ cd .. $ pwd $ cp hello.c test.txt test $ ls test $ rm -ri test 全て y と答える $ ls ホームディレクトリ unix カレントディレクトリ test dat hello.c lu.f90 lu-omp.f90 hello.c test.txt mm-omp.c mm-omp.f90 削除 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90 test.txt
ファイルの移動と名前の変更 $ mkdir test $ ls $ mv hello.c test.txt test $ ls test $ mv lu.f90 lu-serial.f90 ファイルの移動 ファイル名の変更 ホームディレクトリ unix カレントディレクトリ 移動 test dat hello.c lu.f90 lu-omp.f90 hello.c test.txt mm-omp.c mm-omp.f90 mm.c mm.f90 移動 pi-omp.c pi-omp.f90 ファイル名変更 pi.c pi.f90 lu-serial.f90 sample.c sum.f90 test.txt
*の利用(1) $ mkdir lu $ ls $ mv lu-* lu $ ls lu 移動 名前の先頭が lu- であるファイルを移動 ホームディレクトリ unix カレントディレクトリ test 移動 dat lu lu.f90 lu-omp.f90 hello.c mm-omp.c lu-serial.f90 test.txt mm-omp.f90 lu-omp.f90 mm.c mm.f90 pi-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90
*の利用(2) $ ls $ mkdir mm $ mv mm.* mm-* mm $ ls mm 移動 名前の先頭が mm. であるファイルと mm- であるファイルを移動 (mm* とすると mmディレクトリまで 含まれてしまう) ホームディレクトリ unix カレントディレクトリ test mm lu 移動 hello.c dat lu-serial.f90 test.txt mm-omp.c lu-omp.f90 mm-omp.f90 mm.f90 mm.c mm.c mm.f90 mm-omp.f90 pi-omp.c mm-omp.c pi-omp.f90 pi.c pi.f90 sample.c sum.f90
*の利用(3) $ cd mm $ ls $ mkdir f c $ mv *.f90 f $ mv *.c c $ ls * 移動 ホームディレクトリ unix カレントディレクトリ カレントディレクトリ dat test mm lu pi-omp.c pi-omp.f90 hello.c pi.c lu-serial.f90 test.txt pi.f90 lu-omp.f90 sample.c sum.f90 mm.f90 移動 mm.c c f mm-omp.f90 mm-omp.c mm.c mm.f90 mm-omp.c mm-omp.f90
ディレクトリのコピー $ cd ~/unix $ ls $ ls -R $ cp -r mm mm-copy コピー ホームディレクトリ カレントディレクトリ カレントディレクトリ dat test lu pi-omp.c pi-omp.f90 hello.c pi.c lu-serial.f90 test.txt pi.f90 コピー lu-omp.f90 sample.c sum.f90 mm mm-copy c f c f mm.c mm.f90 mm.c mm.f90 mm-omp.c mm-omp.f90 mm-omp.c mm-omp.f90
ディレクトリの移動 $ mkdir programs $ mv mm lu programs $ ls $ ls -R ホームディレクトリ unix カレントディレクトリ カレントディレクトリ dat test mm-copy pi-omp.c programs pi-omp.f90 hello.c pi.c test.txt pi.f90 c sample.c f sum.f90 mm lu mm.c mm-omp.c mm.f90 mm-omp.f90 c f lu-serial.f90 lu-omp.f90 mm.c mm.f90 mm-omp.c mm-omp.f90
プログラムの入力 Emacsを起動し,下のプログラムを入力 #include <stdio.h> int main() { $ cd ~/unix $ emacs -nw test.c #include <stdio.h> int main() { printf("Hello World\n"); return(0); } 保存コマンド: C-x C-s 終了コマンド: C-x C-c
コンパイルと実行(1) sample.c をコンパイル C言語プログラムのコンパイル: cc コマンド $ cc sample.c –o sample $ ls
コンパイルと実行(2) sample の実行 ./ を忘れない $ ./sample Welcome to the UNIX world!
コンパイルと実行(3) 自分で入力したプログラムのコンパイル エラーが出たら再編集 再編集 エラーメッセージが表示された? $ 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) sum.f90 のコンパイル $ gfortran sum.f90 –o sum $ ls
リダイレクションの利用(2) 実行: まずキーボードから入力 $ ./sum A = ? 10 B = ? 20 実行: まずキーボードから入力 $ ./sum A = ? 10 B = ? 20 A = 10, B = 20, A + B = 30 キーボードから入力 キーボードから入力
リダイレクションの利用(3) 実行: ファイルから入力 (リダイレクト) $ less dat 中身を確認したら q で終了 実行: ファイルから入力 (リダイレクト) $ less dat 中身を確認したら q で終了 $ ./sum < dat A = ? B = ? A = 100, B = 200, A + B = 300
リダイレクションの利用(4) 実行: ファイルから入力し,ファイルへ出力 (リダイレクト) 実行: ファイルから入力し,ファイルへ出力 (リダイレクト) $ ./sum < data > out $ less out
リダイレクションとパイプラインの利用 実行: 出力を次のコマンドの入力とする (パイプライン) 実行: 出力を次のコマンドの入力とする (パイプライン) $ ./sum < data | tail –1 $ ./sum < data | tail –1 > out $ less out
パイプラインの利用 1画面に表示しきれない出力をページ毎に表示 $ ls -lR | less
ログアウト 必ず以下を実行してログアウトする $ exit