情報処理概論(第二日目)

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