ファイル操作基本とEmacsを用いたテキストファイル編集

ファイルとは

「ファイル」とは,電子的に表現された文字情報や各種データ(画像やデジタル音声)やプログラム等をコンピュータ内部で保存しているものを表す用語(概念)である. プログラミング演習の授業中に様々な文書やプログラムを作成・編集・保存するということは, ファイルを作成・編集・保存することを意味する.

ファイルの例とファイル名

皆さんに身近なCDを考えてみよう.これらの「記憶媒体(メディア)」には,音楽や映像の情報がデジタルデータとして記録されており,これらを読み出すことで再生して楽しむことが出来る.また,Macに標準装備のiTunesを使えば,CDの音楽情報を読み取ってパソコンに取り込み,その音楽データをiPodに転送して楽しむことも出来る.

これらの音楽データは楽曲毎にCDやiPod内部でそれぞれ区別して管理されており,自由自在に選曲して再生できるのは良く知っているだろう.実は,これらの音楽データはCDメディア上やiPod内部において,それぞれ「ファイル」として記録されている.つまり,「ファイル」とはコンピュータやコンピュータ用記憶媒体において,ひとかたまりのデータ(例えば,音楽一曲分)を記録する単位であり,それらには「名前」を付ける事により,たとえ数千数万のファイルが記録されていても,それぞれ区別して取り出して利用することが出来る.

現在,一般的に入手可能な殆どのコンピュータでは,情報(データ)を記録する単位として「ファイル」を用いている.WindowsやMacOS XなどOSの違いにより,ファイルの実現方法の詳細は異なっているが,基本的な考え方として

というのは,ほぼ共通している.

技術的には,ファイル名として漢字を含む殆どの文字を利用することが出来るが,例えば,WindowsからMacOS X,或いは,MacOS XからLinuxなど,異なるOSの間でファイルを交換して利用しようとすると,日本語(漢字・ひらがな・カタカナや記号など)をファイル名に使うと,正常に画面表示されないなど様々なトラブルに巻き込まれる可能性が極めて高い.そのため,ファイル名には英数字(英数キーを押して英語モードで入力される文字)をファイル名に使う事を強く勧める.

また,英数字の中でも記号類はトラブルに繋がる可能性があるので,ファイル名として使える安全な文字は,アルファベット大文字と小文字,数字,アンダースコア,ハイフン,ピリオド程度である.また,ファイル名の長さはMacOS Xでは255文字(漢字の場合は,その半分)である.

ファイル名の確認

ターミナルで作業中にファイル名一覧を確認するのは ls コマンドである.

ターミナルを開いて,そこで

ls<Return>

とタイプして,そこにあるファイル名を確認してみよう.

自分では作成したつもりはなくても,既にcse環境にユーザ登録された時点で幾つかのファイルが作成済みである.

ファイルを作成してみる

ここで試しに一つのファイルを作成してみよう.ファイルの目的の一つは,何らかの情報を「記録する」ことであるので,その一例としてターミナル上でコマンドを実行した結果をファイルとして記録してみよう.

UNIXには,scriptコマンドと呼ばれる,ターミナルウィンドウ上に表示された文字をファイルとしてコマンドが用意されている.scriptコマンドを起動する際には,引数として記録として残したいファイルの名前を与えて実行する.ここでは,日付を表示するdateコマンド,利用しているUNIXの種類を表示するunameコマンド,暦を表示するcalコマンドをそれぞれ実行した結果をファイル名testというファイルとして記録してみる.また,scriptコマンドの記録を終えて終了するにはexitコマンドを実行する.

ここでは,ターミナル上で

script test <Return> date <Return> uname <Return> cal 12 2008 <Return> exit <Return>

とタイプすればtestというファイルが出来るはずである.

無事,testというファイルが出来ていることを確認してみよう.ファイル名の確認をするには

ls<Rerutn>

を実行する.

(注:今後,課題提出などのため,プログラムの実行結果を記録する必要が出てくる.その場合に,このscriptコマンドは役に立つだろう.)

ファイル内容の表示

ファイルの中身を確認するには cat (catenate)コマンドを用いて

cat ファイル名<Return>

と実行する.(ちなみに,本来,catコマンドはファイル内容の表示用コマンドではなく,複数のファイルを連結(catenate)するためのコマンドである.)

長いファイル内容の表示

一画面に収まり切らない長いファイルを表示させて確認したい場合,どんどんスクロールして過ぎ去ってしまう.このような場合には more コマンドを用いて

more ファイル名<Return>

と実行する.

moreコマンドはターミナルの一画面づつ区切りながら長いファイルを順次表示してくれる.一画面分表示すると一旦停止するので,その時に以下のキー操作で様々なアクションを指示できる.

ファイル名の変更

ファイル名は必要に応じて変更することが出来る.ファイル名を変えるにはmv (move)コマンドを用いる.
mv 元ファイル名 新ファイル名

testというファイルをlogというファイル名に変更するには,

mv test log

と実行する.

無事,名前が変更できたかどうか ls コマンドを実行して確認してみよう.

ファイルの複製

ファイルは,コンピュータ内部に記録された電子的データであり,簡単に寸分たがわず複製出来ることが特徴である.ファイルを複製するには cp (copy)コマンドを用いて

cp 元ファイル名 複製先ファイル名

と実行する.

例えば,ファイル log を log2 に複製するには

cp log log2

と実行する.

ファイルの削除(消去)

ファイルは削除(或いは消去)することが出来る.また,作成したファイルは削除しない限り残り続ける.一般にファイルを作成できる容量は有限であり,また,cse環境では全員が一つのファイルサーバと呼ばれるコンピュータ上にファイルを保管しているので,一人一人があまりに過剰にファイルを作成したまま放置すると容量が足りなくなってしまう.そのため,不要になったファイルはこまめに削除するように心がけましょう.

ファイルを削除する為のコマンドは rm (remove)コマンドであり,

rm 削除するファイル名

と実行する.

ここでは,log2というファイルを削除してみよう.

rm log2

無事,削除出来たかどうか ls コマンドで確認してみよう.

ls

補足: Finder上のGUIによるファイル操作

既に自宅でMacOS Xをある程度使い込んでいる者,或いは,Windowsの操作に慣れている者は,上記のコマンド操作と同等の操作(ファイル名変更・複製・削除)が,MacOS XのFinder上(又は,WindowsのExplorer上)でマウス操作を用いて簡単に出来る事に気がついているだろう.確かに,この程度のファイル操作であればGUIを用いた手軽で優れているように思える.

しかし,良くある誤解(特にパソコン操作が既にある程度出来る者が陥る誤解)は,「CUIは色々覚えなくちゃいけないから面倒だ.マウスを使ったGUIの方が簡単で慣れているから,それで十分さ.」というものである.既に説明した通り,GUI操作は比較的簡単なパソコン操作を素人でも直ぐに出来るようにするためのものであり,ちょっと複雑な操作,或いは,ネットワークを介した遠隔操作ではGUIは役に立たない.

少し難しいと思えるかも知れないが,ここでしっかりとコマンドによるファイル操作が出来るようになる必要がある.尚,ここで手を抜いてコマンド操作から逃げる者は,後で痛い目に遭う.

ファイル操作に関する練習課題

  1. scriptコマンドを用いてファイルtestを作成して,catコマンド及びmoreコマンドで内容を確認せよ.
  2. mv コマンドを用いて,ファイルtestの名前を変更し log という名前にしてみよ.
  3. cp コマンドを用いて,ファイル log を複製(コピー)して log2 というファイルを作成せよ.
  4. rm コマンドを用いて log2 を削除してみよ.

ここで,色々なコマンドを操作していて,良く分からない状態になってしまった場合には,安易に誰かに助けを求める前に, 自力でもトラブルから脱出できることが多いことを覚えておくこと. 特に殆どのコマンド操作の場合,C-cでプロンプトが表示された状態に 戻れることが多い.

Emacsを用いたファイル編集の流れ

Emacsは「テキストファイル」と呼ばれる文字情報のみで出来ているファイルを作成・編集するための極めて重要なツール(テキストエディタ)である.今後,Webページ,レポート作成やC言語プログラム作成などにおいて非常に良く用いるので,今のうちに使い方に完全に慣れてしまうことが 大切である.尚,MacOS X標準のテキストエディタであるテキストエディットは,C言語やJava言語のプログラミングに用いるには適当でない部分があるので,使用を避けることをすすめる.

尚,EmacsはMacOS Xに標準でインストールされているがターミナル内でしか利用出来ないとか,日本語対応があまり十分でないなどの理由で使い勝手が悪いようである.そのため,本演習では,NASAのZenitani氏の開発によるCarbon Emacsパッケージ (http://homepage.mac.com/zenitani/emacs-j.html)を用いる.自宅で既にC言語やJava言語プログラミングを始めようと考えている者は,上記サイトからダウンロードして各自のMacBookにインストールすることをお勧めする.

尚,CSE環境ではCarbon Emacsを導入した上でemacsコマンドでCarbon Emacsが起動するように調整している.自宅環境でEmacsを使う場合には混乱しないようにして欲しい.お勧めは,「Carbon Emacsを導入しておいて,起動コマンドとしてopen -a Emacs.appを使う」である.

(注: cse環境におけるNetBootしたMacOS Xに追加インストールされている大半のソフトウェアはオープンソースソフトフェア,或いは,フリーソフトウェアであり,各自のMacにインストールして自由に利用する事が出来る.尚,フリー, free, の意味は,「自由に」使えるという意味であって,「無料で」使えるという意味ではない事に注意して欲しい.これらのフリーソフトウェアについては,後日,授業中の実習課題として各自のMacへのインストールを予定している.)

Emacsの起動から終了まで

ここでEmacsの操作練習として,先ほど作成したファイル log をEmacsで編集してみよう.

Emacsを用いたファイル編集手順の流れは2001年度版コンピュータガイドpp.81‾87に詳しく載っているが,その大まかな手順は以下の5段階となる.

ControlキーとESCキーと組み合わせたキー操作とその表記

Emacsでは,ControlキーとESCキーを組み合わせたキー操作を頻繁に用いる.そのようなキー操作を以下のように表記する.

Controlキーを押しながらキー何かxというキーを押す: C-x (例:Controlキーを押しながら,gを押す場合, C-g)

ESCキーを一度押して放してから何かxというキーを押す: M-x (例:ESCキーを押して放してからeを押す場合, M-e)

Emacsを起動

する.ターミナルにプロンプトが出ている状態でopen -a Emacs.app &<Return>と タイプすれば良い.または,Dockからをクリックするか,アプリケーションフォルダからEmacs.appをダブルクリックして開く.

尚,Emacsウィンドウの下から2行目の白黒反転した行をモードライン,最下行をエコーラインと呼ぶ.

編集したいファイルの名前を指定

Emacsが無事起動したら,次に編集したいファイルの名前をEmacsに指示する.C-x C-fをタイプするとエコーライン上に

Find File: ‾/

と表示されるので,ここに読み込みたいファイル名をタイプして指定すること.新しくファイルを作成する場合も,ここでファイル名を指定すればよい.ここではファイルlogを編集するので,ファイル名logをタイプし,最後に<Return>をタイプすると,その名前のファイルがEmacsに読み込まれて編集できる状態になる.

尚,Finder上からEmacsにファイルを読み込ませて開きたい場合,ファイルアイコンをEmacsのアイコン上にDrag&Dropする.

ファイルを編集

Emacsに読み込まれたファイルは,カーソルの位置(左側)にキーボードからタイプされた文字が入力されてゆく.間違えた場合にはdeleteキーをタイプして修正する.

カーソルの移動

カーソルを移動させてウィンドウの端まで来ると自動的にスクロールして,ファイルの表示個所が移動する.カーソル移動以外に表示個所を移動させるには,以下のキー操作がある.

行の移動と複写

ファイルを編集していると,特定の一行(又は,複数行)を別の場所に移動させたいと思うことがある.この時,C-kとC-yを組み合わせた次の手順で簡単に移動できる.

  1. 移動させたい行をC-kで削除する.この時,削除された行は無くなってしまうのでなく,「バッファ」と呼ばれる場所に一時的に記憶される.また,C-kを繰り返すと複数行を削除してバッファに入れることが出来る.
  2. 移動先にカーソルを移動させる.
  3. C-yをタイプすると,先にC-kで削除してバッファに入れられた内容が復元される.このC-yを繰り返すことでバッファに入っている内容が次々に複写される.

特にC-kC-yを 組み合わせた行の移動や複写編集の操作方法に慣れて欲しい.

C-k の働き: カーソルのある位置から,その行の末尾までの削除すると同時に「キルバッファ」に入れる.バッファとは削除した内容を一時的に覚えてくれる場所を意味する.この操作をkill操作と呼ぶ.

C-y の働き: 「キルバッファ」に入れておいた「行」をカーソル位置に復元して入力する.この操作をyank操作と呼ぶ.

尚,Emacs Carbonの場合,設定により,MacOS X標準のキー操作(Command-X, Command-C, Command-V)による,カット&ペーストやコピー&ペースト操作も可能である.

アンドゥ

操作を間違えた場合,アンドゥ操作を試してみよう.アンドゥ (Undo)とは直前の操作を取り消す操作である.アンドゥするにはC-_ (アンダースコア),又は, C-x u (Contorol-xのあとにu)をタイプする.アンドゥを繰り返すと,過去の編集履歴を遡って操作を取り消してくれる.

編集結果をファイルへ保存

C-x C-sで作業結果がファイルに保存される. これを忘れると折角の作業が無駄になることがあるので,必ず編集作業が終わったら保存操作を忘れずに行うこと.

Emacsを終了

C-x C-cでEmacsを終了する. 保存操作を忘れていた場合はメッセージが表示されるので,y か n のどちらか適切な方をタイプして答えればよい.

尚,Emacsの操作中によく分からない状態になってしまった時には, C-g とタイプすれば,殆どの場合,操作開始直前の状態に戻れることを是非覚えておくこと.

英文テキスト編集練習

  1. Emacsを起動して以下の英文を eng.txt という名前のテキストファイルとして作成せよ. 尚,これはテキストファイルの作成練習に過ぎないので多少の入力間違いは気にしなくてもよい. 入力間違いに神経質にならないこと! また1行を折り返したい(改行したい)場合は,単に<Return>とタイプすれば良い. 改行を取りやめる場合は<Delete>をタイプすること.(英文は,株式会社アカデミー出版による通信英語講座中級コース「追跡」 ( http://www.ea-go.com/html/chase.html )より引用しました.)

    "Look out!" The pilot knew they were going to die.
    The large, twelve-passenger Silver Arrow jet plane was being tossed
    around in the sky like a toy by the powerful winds over
    the Appalachian Mountains in upstate New York.
    The pilot and co-pilot were struggling hard to keep the nose of the aircraft up,
    fighting against the vicious downdrafts.


  2. ファイルを保存し,一旦,Emacsを終了せよ.その後,再度,Emacsを起動して eng.txt を読み込み,以下のように編集せよ. この時,C-kC-yの組み合わせによる行の移動や複写を上手に使うと能率良く編集が行える.編集作業に入る前に,そのような能率の良い手順をしっかり考えてから編集操作を行ってみよ.

    "Look out!" The pilot knew they were going to die.
    "Look out!" The pilot knew they were going to die.
    The pilot and co-pilot were struggling hard to keep the nose to keep the nose.
    "Look out!" The pilot knew they were going to die.
    The pilot and co-pilot were struggling hard to keep the nose to keep the nose.
    The Appalachian Mountains in upstate New York.

基礎プログラミング演習Iの表紙ページへ戻る