情 報 処 理 技 法 (Cプログラミング)I 第 2 回 ー UNIXの 基 本 (2) C 言 語 の 初 歩 ー 担 当 : 荻 田 武 史
本 日 の 授 業 内 容 最 低 限 覚 えるべきUNIXコマンド pwd, ls, mkdir, cd, cp, rm, mv テキストエディタの 簡 単 な 使 い 方 テキストエディット, Jedit X,Emacs C 言 語 プログラミングの 初 歩 hello, world を 画 面 に 出 力 2
最 低 限 覚 えるべきUNIXコマンド pwd ls mkdir cd cp mv rm : 現 在 のディレクトリを 表 示 : ディレクトリの 中 身 を 表 示 : ディレクトリの 作 成 : ディレクトリの 移 動 : ファイルのコピー : ファイルの 移 動 : ファイルの 削 除 ディレクトリ Windowsで 言 うフォルダのこと 3
コマンド 入 力 はどこで? ターミナルを 起 動 ( Finder アプリケーション ユー ティリティ ターミナル ) たとえば $ ls 今 後 この $ 記 号 が 出 てきたら ターミナルでコマンドを 入 力 するのだな と 思 うこと $を 入 力 する 必 要 はありません 4
pwd (print working directory) 現 在 のディレクトリ 位 置 を 表 示 $ pwd /Users/ogita / (ルートディレクトリ)と 呼 ばれる 一 番 上 の 階 層 から 見 て 自 分 の 現 在 の 居 場 所 (カレントディレクトリ)がどこに 位 置 し ているかを 表 示 する 5
ls (list specific) ディレクトリの 中 身 を 表 示 $ ls file1 file2 dir1 file3 dir2 コマンドには 大 抵 オプションがある $ ls -F (ディレクトリ 名 の 最 後 に / をつける) file1 file2 dir1/ file3 dir2/ $ ls -a (すべてのファイルを 表 示 ).file4.file5.dir3 file1 file2 dir1 $ ls -af ( 上 の2つの 合 わせ 技 ).file4.file5.dir3/ file1 file2 dir1/ 6
lsのつづき $ ls -l (ファイルの 属 性 などをリスト 表 示 ) 合 計 48 drwxr-xr-x 3 ogita teacher 4096 3 月 19 2002 Desktop drwx------ 5 ogita teacher 4096 4 月 15 13:27 Mail drwx-----t 2 ogita teacher 4096 6 月 28 2001 Wnn6 drwx-----t 2 ogita teacher 4096 4 月 22 19:46 Wnn7 drwx------ 2 ogita teacher 4096 3 月 19 2002 nsmail オプションを 付 けると より 詳 しい 情 報 が 得 られる 各 オプションと 表 示 内 容 の 意 味 は 各 自 で 調 べておくこと $ man ls (マニュアルを 読 むためのコマンド) マニュアルを 終 えるには q を 入 力 7
mkdir (make directory) ディレクトリの 作 成 $ mkdir work $ ls -F file1 file2 dir1/ file3 work/ ディレクトリの 中 身 が 空 なら $ rmdir work でディレクトリを 削 除 できる 再 び ls で 確 認 してみよう 8
cd (current/change directory) ディレクトリの 移 動 $ pwd ( 移 動 前 の 位 置 を 確 認 ) /Users/ogita $ mkdir work (workディレクトリを 作 成 ) $ cd work (workへ 移 動 ) $ pwd ( 移 動 後 の 位 置 を 確 認 ) /Users/ogita/work 9
cdのつづき $ cd.. (1つ 上 の 階 層 へ 移 動 ) $ pwd /Users/ogita 単 純 に $ cd とすると 最 初 の 場 所 (ホームディレクトリ)に 戻 ることができる 10
テキストエディタ プログラミングなどに 必 要 なテキスト 編 集 などの 処 理 をするためのソフト 授 業 ではC 言 語 プログラミングのために 使 う u テキストエディット(Mac OS X 標 準 搭 載 ) u Jedit X( 操 作 が 簡 単 有 料 だがおすすめ) u Emacs( 操 作 に 少 し 慣 れが 必 要 無 料 ) u vi( 操 作 に 慣 れが 必 要 無 料 ) 11
Emacs Emacsは 非 常 に 多 機 能 なエディタである Emacsの 起 動 ( 指 示 があるまでやらないこと) $ emacs Emacsの 終 了 control+x の 後 control+c 12
Emacsのつづき 新 規 ファイルの 作 成 $ cd work $ emacs hello.c hello.c という 新 しいファイル ( 中 身 は 何 も ない) を 作 成 してEmacsで 編 集 開 始 既 に hello.c が 存 在 する 場 合 は そのファイルを 編 集 することになる 13
hello.c #include <stdio.h> int main(void) { printf( hello, world\n ); 記 号 は 環 境 によっては \ 記 号 (バックスラッシュ) で 表 記 される return 0; } ファイル 編 集 が 終 わったら Save アイコン を 押 して 編 集 内 容 をセーブする 14
コンパイル 実 行 gcc(gnu C Compiler)を 使 う $ ls hello.c $ gcc hello.c $ ls a.out hello.c $./a.out hello, world コンパイル: (C 言 語 の 文 法 的 に) 誤 りがなければ 何 も 言 われずに 終 わる プログラムの 実 行 : この 実 行 の 仕 方 は 約 束 事 だと 思 うことにする 15
コンピュータとプログラミング Emacs,JeditX エディタ gcc コンパイラ hello.c プログラム 実 行 プログラム a.out オペレーティングシステム (Mac OS X) ハードウェア (imac) 16
cp (copy) ファイルのコピー $ ls (ディレクトリの 中 身 を 表 示 ) a.out hello.c $ cp hello.c test.c $ ls a.out test.c hello.c 別 のファイル 名 で コピー $ cat test.c で コピーされたファイルを 確 認 してみよう 17
cpのつづき $ ls a.out test.c hello.c $ mkdir work2 $ cp test.c work2/ 指 定 したディレクトリ の 中 へコピー work2に test.c があるか 確 かめてみよう 18
mv (move) ファイルの 移 動 /ファイル 名 の 変 更 $ ls a.out test.c hello.c work2 $ mv test.c test2.c $ ls a.out test2.c hello.c work2 $ mv test2.c work2/ $ ls a.out hello.c work2 ファイル 名 変 更 指 定 したディレクトリ の 中 へ 移 動 19
$ cd work2 $ ls test.c test2.c $ rm -i test2.c rm (remove) ファイルの 削 除 オプション -i を 付 けると 削 除 の 確 認 ができる yを 押 してから nを 押 してから を 押 すと 本 当 に 削 除 される を 押 すと 削 除 されない 逆 に オプション -f を 付 けると 削 除 の 確 認 な しでファイルを 消 すことができる 20
rmのつづき $ cd.. $ ls a.out hello.c work2 $ rmdir work2 $ rm r work2 work2の 中 にはファイルが あるので rmdirではディ レクトリを 削 除 できない オプション r を 付 けるとディレクトリの 中 身 を 再 帰 的 に 削 除 し ディレクトリも 削 除 $ ls a.out hello.c 21
次 回 の 予 定 変 数 標 準 入 出 力 22
( 付 録 )Emacs 上 での 操 作 キー 操 作 の 表 示 法 C-< 文 字 > 例 C-x, C-f Ctrl キーを 押 さえながら < 文 字 >キーを 押 す M-< 文 字 > 例 M-x, M-< Esc キーを 押 した 後 < 文 字 >キーを 押 す
Emacs 上 での 操 作 キー 操 作 を 間 違 えたら C-g コマンドの 中 止 取 り 消 し その 他 困 ったときも 試 してみよう
Emacsの 起 動 方 法 ターミナル 上 で $ emacs $ emacs <ファイル 名 > すでに 存 在 する ファイルを 編 集 する 場 合
Emacsの 構 成 テキスト ウィンドウ ---- 文 書 の 編 集 モードライン ---- 編 集 の 状 態 表 示 エコー 領 域 ---- メッセージの 表 示
Emacsの 終 了 方 法 キー 操 作 C-x C-c 終 了 時 保 存 されていないファイルが 存 在 する 場 合 Save file <ファイル 名 >? と 表 示 される 通 常 は Yes をクリックするか y とタイプすることでファイルに 保 存 され 終 了
ファイルの 読 み 込 み キー 操 作 C-x C-f Find file: ~ / と 表 示 される ファイル 名 を 入 力 し キーを 押 す
カーソルの 移 動 1 文 字 ずつ 移 動 - 上 下 左 右 の 矢 印 キー - C-f : 1 文 字 右 へ 移 動 C-b : 1 文 字 左 へ 移 動 C-p : 1 行 上 へ 移 動 C-n : 1 行 下 へ 移 動
まとめて 移 動 カーソルの 移 動 M-f: 1 単 語 分 右 へ 移 動 M-b: 1 単 語 分 左 へ 移 動 C-a: 行 の 先 頭 へ 移 動 C-e: 行 の 最 後 へ 移 動 C-v : 次 のページへ 移 動 M-v : 前 のページへ 移 動 M-< : ファイルの 先 頭 へ 移 動 M-> : ファイルの 最 後 へ 移 動
カーソルの 移 動 指 定 した 行 へ 移 動 M-x goto-line Goto line: と 表 示 される 目 的 の 行 番 号 を 入 力 し キーを 押 す
日 本 語 入 力 C-\ 英 数 字 モードと 日 本 語 モードの 切 り 替 え ローマ 字 入 力 により ひらがなで 表 示 <Space> (ローマ 字 入 力 中 ) 漢 字 変 換 C-k (ローマ 字 入 力 中 )カタカナ 変 換
かな 漢 字 変 換 C-f C-b C-o C-i 文 節 の 移 動 ( 右 へ) 文 節 の 移 動 ( 左 へ) 変 換 候 補 の 文 節 を 伸 張 変 換 候 補 の 文 節 を 短 縮 例 きょうはてんきがよいです 今 日 は 天 気 が 良 いです
テキストの 削 除 <Delete> : カーソル 直 前 の1 文 字 を 削 除 C-d : カーソル 下 の1 文 字 を 削 除 M-<Delete>: カーソル 直 前 の1 単 語 を 削 除 M-d : カーソル 下 の1 単 語 を 削 除 C-k : カーソルの 位 置 からその 行 の 最 後 までを 削 除
ファイルの 保 存 上 書 き 保 存 - キー 操 作 C-x C-s Wrote /home/student/... のように 表 示 され 保 存 完 了
ファイルの 保 存 別 名 で 保 存 - キー 操 作 C-x C-w Write file: ~/ と 表 示 される ファイル 名 を 入 力 し キーを 押 す
文 字 列 の 検 索 カーソルの 位 置 から 下 へ 検 索 C-s I-search: と 表 示 検 索 したい 文 字 列 を 入 力 続 けてC-sとタイプすることで 同 じ 文 字 列 を 再 検 索 カーソルの 位 置 から 上 へ 検 索 C-r
文 字 列 の 置 換 M-% Query replace: と 表 示 置 換 したい 文 字 列 [old]を 入 力 し Query replace [old] with: と 表 示 新 しい 文 字 列 [new]を 入 力 し
文 字 列 の 置 換 Query replacing [old] with [new]: と 表 示 され カーソルが 該 当 文 字 列 の 所 へ 移 動 置 換 する 場 合 は y を しない 場 合 は n をタイプ
文 字 列 の 置 換 ( 確 認 なし) M-x replace-string Replace string: と 表 示 置 換 したい 文 字 列 [old]を 入 力 し Replace string [old] with: と 表 示 新 しい 文 字 列 [new]を 入 力 し 確 認 なしで 置 換 終 了