380 likes | 506 Views
実習資料 UNIX 入門講習会. 九州大学情報基盤研究開発センター. 注意: この内容は多目的サーバ (wisdom.cc.kyushu-u.ac.jp) の 任意の ID で利用できますが , ファイルの削除等を含んでいるので 各コマンドの意味を理解するまでは講習会用 ID で利用することを お勧めします. 実習 1. ログイン ファイル操作 ディレクトリの作成 ファイルの移動 , コピー , 削除 ログアウト. ログイン. まず MacOS にログイン デスクトップ下方の 「ターミナル」のアイコン をクリック 出てきた画面で、 以下のように入力し、改行.
E N D
実習資料UNIX入門講習会 九州大学情報基盤研究開発センター 注意: この内容は多目的サーバ(wisdom.cc.kyushu-u.ac.jp)の任意のIDで利用できますが, ファイルの削除等を含んでいるので各コマンドの意味を理解するまでは講習会用IDで利用することをお勧めします.
実習1 • ログイン • ファイル操作 • ディレクトリの作成 • ファイルの移動,コピー,削除 • ログアウト
ログイン • まずMacOSにログイン • デスクトップ下方の「ターミナル」のアイコンをクリック • 出てきた画面で、以下のように入力し、改行 ssh -l ユーザID wisdom.cc.kyushu-u.ac.jp エル 受付でお渡しした小さい紙に書かれたユーザID
実習1 漢字コードの設定 1. デスクトップ上部の「ターミナル」をクリック 3. 「詳細」をクリック後、「文字エンコーディング」をクリックして「UTF-8」をクリック 2. 「環境設定」をクリック
実習1 ファイル操作の準備 [user@wisdom]$ ls [user@wisdom]$ tar xvf /tmp/unix1.tar [user@wisdom]$ 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
実習1 作業ディレクトリの変更 現在のディレクトリを確認 [user@wisdom]$ pwd [user@wisdom]$ cd unix1 [user@wisdom]$ pwd [user@wisdom]$ ls • カレントディレクトリを unix1に変更. 作業ディレクトリの変更 ホームディレクトリ カレントディレクトリ 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
実習1 ファイルの内容閲覧 [user@wisdom]$ 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
実習1 ディレクトリの作成とファイルのコピー [user@wisdom]$ ls [user@wisdom]$ mkdir test [user@wisdom]$ cp hello.c test [user@wisdom]$ cp test.txt test [user@wisdom]$ls [user@wisdom]$ 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
実習1 ファイルの削除 [user@wisdom]$ cd test [user@wisdom]$ pwd [user@wisdom]$ ls [user@wisdom]$ rm hello.c [user@wisdom]$ rm test.txt [user@wisdom]$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
実習1 複数のファイルの操作 [user@wisdom]$ cd .. [user@wisdom]$ pwd [user@wisdom]$ cp hello.c test.txt test [user@wisdom]$ ls test [user@wisdom]$ rm -ri test 全て y と答える [user@wisdom]$ 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
実習1 ファイルの移動と名前の変更 [user@wisdom]$ mkdir test [user@wisdom]$ ls [user@wisdom]$ mv hello.c test.txt test [user@wisdom]$ ls [user@wisdom]$ ls test [user@wisdom]$ mv lu.f90 lu-serial.f90 [user@wisdom]$ 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-serial.f90 ファイル名変更 lu-essl.f90 test.txt
実習1 *の利用(1) [user@wisdom]$ mkdir lu [user@wisdom]$ ls [user@wisdom]$ mv lu-* lu [user@wisdom]$ ls [user@wisdom]$ ls lu 名前の先頭が lu- であるファイルを移動 ホームディレクトリ unix1 カレントディレクトリ test lu pi.f90 pi.c hello.c pi-omp.f90 lu-serial.f90 test.txt pi-omp.c lu-omp.f90 mm.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
実習1 *の利用(2) [user@wisdom]$ ls [user@wisdom]$ mkdir mm [user@wisdom]$ ls [user@wisdom]$ mv mm.* mm-* mm [user@wisdom]$ ls [user@wisdom]$ 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
実習1 *の利用(3) [user@wisdom]$ cd mm [user@wisdom]$ ls [user@wisdom]$ mkdir f c [user@wisdom]$ mv *.f90 f [user@wisdom]$ mv *.c c [user@wisdom]$ ls [user@wisdom]$ 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 移動
実習1 ディレクトリのコピー [user@wisdom]$ cd ~/unix1 [user@wisdom]$ ls [user@wisdom]$ ls -R [user@wisdom]$ cp -r mm mm-copy [user@wisdom]$ ls [user@wisdom]$ ls -R ホームディレクトリ unix1 カレントディレクトリ 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 移動
実習1 ディレクトリの移動 [user@wisdom]$ mkdir programs [user@wisdom]$ mv mm lu programs [user@wisdom]$ ls [user@wisdom]$ 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 mm-essl.f90 lu-serial.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 時間に余裕がある人は 以下のようにファイルを整理してみましょう.(ディレクトリは必要に応じて事前に作成してください) ● mm-copyディレクトリを削除 ● pi.f90 と pi-omp.f90 を programs/pi/f ディレクトリの下に移動 ● pi.c と pi-omp.c を programs/pi/c ディレクトリの下に移動 ホームディレクトリ unix1 test programs mm lu hello.c pi test.txt c f c f lu-serial.f90 lu-omp.f90 mm.c mm.f90 pi.f90 lu-essl.f90 pi.c mm-omp.c mm-omp.f90 pi-omp.f90 pi-omp.c mm-essl.c mm-essl.f90
実習2 • プログラムの入力 • プログラムのコンパイル・実行 • リダイレクトとパイプライン
実習2 プログラムの入力(1) • 作業ディレクトリに移動 [user@wisdom]$ cd ~/unix1/test ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c test.txt lu-serial.f90 lu-omp.f90 mm.f90 pi.f90 mm.c lu-essl.f90 pi.c pi-omp.f90 mm-omp.f90 mm-omp.c pi-omp.c mm-essl.f90 mm-essl.c
実習2 プログラムの入力(2) • Emacsを起動し,次ページのプログラムを入力 [user@wisdom]$ emacs -nw test.c 以下のプログラムを入力し,保存後終了. 保存コマンド:C-x C-s 終了コマンド: C-x C-c #include <stdio.h> int main() { printf("Hello World\n"); return(0); }
実習2 コンパイルと実行(1) • /tmp/sample.c をコピー (まず予め入力してあったものを試す) [user@wisdom]$ cp /tmp/sample.c . [user@wisdom]$ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c lu-serial.f90 test.txt lu-omp.f90 test.c mm.f90 pi.f90 mm.c lu-essl.f90 pi.c pi-omp.f90 sample.c mm-omp.f90 mm-omp.c pi-omp.c mm-essl.f90 mm-essl.c
実習2 コンパイルと実行(2) • sample.c をコンパイル • C言語プログラムのコンパイル: gcc コマンド [user@wisdom]$ gcc sample.c –o sample [user@wisdom]$ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu c f c f hello.c lu-serial.f90 test.txt lu-omp.f90 test.c mm.f90 pi.f90 mm.c lu-essl.f90 pi.c sample.c pi-omp.f90 mm-omp.f90 mm-omp.c pi-omp.c sample mm-essl.f90 mm-essl.c
実習2 コンパイルと実行(3) • sample の実行 • ./ を忘れない [user@wisdom]$ ./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 test.c mm.f90 pi.f90 mm.c lu-essl.f90 pi.c sample.c pi-omp.f90 mm-omp.f90 mm-omp.c pi-omp.c sample mm-essl.f90 mm-essl.c
実習2 コンパイルと実行(4) • 自分で入力したプログラムのコンパイル • エラーが出たら再編集 [user@wisdom]$ gcc test.c –o test 再編集 [user@wisdom]$ emacs –nw test.c エラーメッセージが表示された? No Yes [user@wisdom]$ ./test 表示が正しくない? Yes No Congratulations!
実習2 コンパイルと実行(5) • プログラムの再編集(表示内容の変更) • 終わったら再度コンパイル・実行 [user@wisdom]$ 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 の行コピー機能を利用すると便利 [user@wisdom]$ ls [user@wisdom]$ gcc test.c –o test [user@wisdom]$ ./test
実習2 リダイレクションの利用(1) • 準備: • /tmp/sum.f90 のコピー [user@wisdom]$ cp /tmp/sum.f90 . [user@wisdom]$ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 mm-omp.f90 sample.c mm-omp.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90
実習2 リダイレクションの利用(2) • Fortran90のコンパイル: gfortran コマンド [user@wisdom]$ gfortran sum.f90 –o sum [user@wisdom]$ ls ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
実習2 リダイレクションの利用(3) • 実行: まずキーボードから入力 [user@wisdom]$ ./sum A = ? 10 B = ? 20 A = 10, B = 20, A + B = 30 キーボードから入力 キーボードから入力
実習2 リダイレクションの利用(4) • 実行: ファイルから入力 (リダイレクト) [user@wisdom]$ less /tmp/data 中身を確認したら q で終了 [user@wisdom]$ ./sum < /tmp/data A = ? B = ? A = 100, B = 200, A + B = 300
実習2 リダイレクションの利用(5) • 実行: ファイルから入力し,ファイルへ出力 (リダイレクト) [user@wisdom]$ ./sum < /tmp/data > out [user@wisdom]$ less out ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
実習2 リダイレクションとパイプラインの利用 • 実行: 出力を次のコマンドの入力とする (パイプライン) [user@wisdom]$ ./sum < /tmp/data | tail –1 [user@wisdom]$ ./sum < /tmp/data | tail –1 > out [user@wisdom]$ less out tail コマンド: ファイルの末尾から指定した行数分を表示する. tail –行数 ファイル名 ホームディレクトリ unix1 カレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
実習2 パイプラインの利用 • 1画面に表示しきれない出力をページ毎に表示 [user@wisdom]$ ls -lR | less カレントディレクトリ ホームディレクトリ unix1 programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
時間に余裕がある人は • プログラムをもっと書き換えてみる 例)emacs test.c 編集後, コンパイル・実行 • 他のプログラムをコンパイル・実行してみる 作業ディレクトリを適宜移動して, gfortran もしくは gccコマンド利用 ホームディレクトリ unix1 programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
実習3 • XWindow の利用
実習3 ログイン • 新しく「ターミナル」を起動して、以下のコマンドによりログイン • 通常のログイン時のコマンドに、オプション-Xを追加 • X windowサーバとの通信を可能にするオプション ssh -l ユーザID -X wisdom.cc.kyushu-u.ac.jp
実習3 新しいウィンドウの起動 [user@wisdom]$ xterm & 新しく開いたウィンドウ内で[user@wisdom]$ cd unix1/test [user@wisdom]$ pwd [user@wisdom]$ ls 元のウィンドウ内で [user@wisdom]$ pwd [user@wisdom]$ ls ホームディレクトリ 最初のウィンドウのカレントディレクトリ unix1 新しいウィンドウのカレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
実習3 Emacs をバックグラウンドで起動 新しく開いたウィンドウ内で[user@wisdom]$ emacs hello.c & 適当に編集し保存(終了はしない) [user@wisdom]$ gcc hello.c –o hello [user@wisdom]$ ./helloEmacs のウィンドウで再度編集し保存 (終了はしない) [user@wisdom]$ gcc hello.c –o hello [user@wisdom]$ ./hello [user@wisdom]$ ホームディレクトリ 最初のウィンドウのカレントディレクトリ unix1 新しいウィンドウのカレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum
実習3 セッションの終了 Emacsのウィンドウでemacs を終了(C-x C-c) 新しいウィンドウ内で [user@wisdom]$ exit 元のウィンドウ内で[user@wisdom]$ exit ターミナルのウィンドウ内で[user@wisdom]$ exit ホームディレクトリ 最初のウィンドウのカレントディレクトリ unix1 新しいウィンドウのカレントディレクトリ programs test pi mm lu hello.c c f c f test.txt lu-serial.f90 test.c lu-omp.f90 mm.f90 pi.f90 mm.c test lu-essl.f90 pi.c pi-omp.f90 out mm-omp.f90 mm-omp.c sample.c pi-omp.c mm-essl.f90 sample mm-essl.c sum.f90 sum