4. 1 リージョン 4. 2 補完 4. 3 検索と置換 4. 4 練習問題 4. 5 ファイルの保護 4. 6 練習問題 4. 7 プリンタに関するコマンド 4. 8 その他のコマンド 4. 9 宿題 4.10 おまけ
注意: emacs の標準的な表記に従い,Spaceキーは SPC,Returnキーは RET,BackSpaceキーまたは Deleteキーは DEL と書くことにします.
emacs でファイルを編集している時,ある文字から別の文字までの連続したひとかたまりを,リージョン(region)と呼び,その部分に対していろいろな処理が行なえます.
リージョンの指定には2通りの方法があります.
リージョンを使用する機能には次のようなものがあります.
M-x を押すと,カーソルがミニバッファに移動し,そこで emacs の機能の名前を入力することができます.すべての機能には名前がついていて,M-x を使って実行することができます.たとえば,ひらがな文字列をかな漢字変換するには,C-x SPC の代わりに M-x henkan-region RET としてもできます.
emacs やシェルには,ファイル名などを入力するとき,最初の何文字かを入れると,それに当てはまる名前を探してくれる機能があります.これを補完(completion)と呼びます.
ミニバッファでファイル名や機能名を入力している途中で次のキーを押すと,補完が起きます.
例えば, /pub/sfc/ipl/1a/exercise/islands/island_b/port_b/treasure を 編集したいとします.
Find file: /pub/sfc/ipl/1a/exercise/ |
Find file: /pub/sfc/ipl/1a/exercise/islands/ |
Find file: /pub/sfc/ipl/1a/exercise/islands/island- |
コマンド名やファイル名を入力している途中で次のキーを押すと,補完が起きます.
注意: ミニバッファで文字列を入力する時は英字入力モードになっているので, C-\ で日本語入力モードにします.
注意: 文字列の途中で改行されていると,見つけることができません.これはこの後に出てくる他の検索・置換方法でも同じです.
C-s,C-r を押すと,インクリメンタルサーチ(incremental search)モードになります.単純な検索では文字列を指定してから検索が始まるので,文字列がたくさんあり過ぎたり,一つも無かったりした時は最初からやり直さなくてはいけません.インクリメンタルサーチは一文字入れるごとに検索を行った結果 を表示するので,結果を見ながら検索文字列を修正することができます.
注意: 日本語の場合はかな漢字変換があるので,一文字ごとではなく変換が確定するごとに検索を行います.
[Search]→[Query Replace...] M-% でクエリーリプレース(query replace)モードになります.検索する文字列と置き換える文字列をミニバッファで入力すると,検索文字列が見つかるたびに,それを置き換えるか聞いてきます.
emacs では,検索は一つのバッファの中で行われます.複数のファイルから文字列を探すには,grep コマンドを使います. 引数は探したい文字列と,探す対象のファイル名です.例えば,hamlet というファイルの中で happy という文字列を探すには,端末ウィンドウで
% grep happy hamlet Guild. Happy, in that we are not ouer-happy: on Fortunes That your good Beauties be the happy cause %
とします.ファイル名のところは,空白で区切って複数のファイル名を書くことができます.複数のファイル名を指定した場合は,結果 の各行の先頭に,どのファイルで見つかったかが表示されます.
注意: 記号は特別な意味を持ちますので,今のところは検索文字列に含めないで下さい.
注意: 日本語文字列を検索するには,ファイルと端末入出力の文字コードを EUC にする必要があります.
端末ウィンドウで grep を実行すると,見つかった行が表示されるだけなので,その部分を編集したい時は不便です.続けて編集したい時は,grep の結果を emacs に取り込みます.
と表示されるので,続けて引数を入力し,RET を押します.なお,-n は行番号を表示するオプションです.
Run grep (like this): grep -n
「L」を「R」に,「R」を「L」に置き換えるのですが,最初に単純に「L」を「R」に置き換えてしまうと,元からあった 「R」と区別がつかないので,次に「R」を「L」に置き換えるときに困ります.
CNS には,学部生,大学院生,卒業生,教職員など6,000人以上のユーザがいます.共同作業ではお互いのファイルが参照できると便利なのですが,もし全く自由に他人のファイルの内容を見たり,変更できたりすると,いろいろな問題が起きる可能性があります.そこで,ファイルやディレクトリごとに,他のユーザからのアクセスを許可したり,禁止したりする機能があります.
アクセス権(access right)とは「誰が」,「何を」,「どうする」という組み合わせに対して, 許可か禁止かを決めたものです.「誰が」は,次の3通りがあります.
% ls -l total 10615 drwx------ 4 hattori 512 Apr 15 17:50 Mail drwxrwxrwx 4 hattori 512 May 6 16:01 Wnn -rw-r--r-- 1 hattori 76 Apr 19 15:10 test % |
標準設定では,新しく作ったファイルは rw-r--r--,ディレクトリは rwxr-xr-x になりますので,他のユーザは変更はできませんが,内容を見ることはできます.Mail (メールを保存するディレクトリ)は,プライバシーの問題がありますので,rwx------ になっています.
アクセス権は chmod コマンドで変更することが できます.
% ls -l total 10615 drwx------ 4 hattori 512 Apr 15 17:50 open-minded -rw-r--r-- 1 hattori 512 May 6 16:01 secret -rw-r--r-- 1 hattori 76 Apr 19 15:10 shared % chmod go+rwx open-minded % chmod go-r secret % chmod g+w shared % ls -l total 10615 drwxrwxrwx 4 hattori 512 Apr 15 17:50 open-minded -rw------- 1 hattori 512 May 6 16:01 secret -rw-rw-r-- 1 hattori 76 Apr 19 15:10 shared |
注意:
ホームディ レクトリそのものを他人から読めないようにすると,設定ファイルが読めなく
て動かなくなるソフトがあります.
SFC にはプリンタがたくさんあり,それぞれに名前がついています.プリンタ に貼ってある「nps1」とか,「nps2」というのが名前です.印刷するときには,
どのプリンタで印刷するかを指定しなければなりません.もし,名前を間違えると,遠く離れた部屋のプリンタで印刷されてしまいますので,気を付けてください.以下の例では「nps15」を指定していますが,これを近くのプリンタの名前に置き換えて実行してください.
プリンタが印刷するデータ形式には何種類かありますが,CNS のプリンタは, すべてポストスクリプト(PostScript)形式のデータを印刷するようになっています.ですから,テキストファイルを印刷するときは,テキストをポストスクリプトに変換しなければなりません.
文字列を検索する時に,特定の文字列ではなく「s または t で始まって,その後に5個の数字と2個のアルファベットがあるもの」といったパターンを指定することができます.このようなパターンは,正規表現(regular
expression)という書き方で指定します. emacs では,メニューの regexp を含む項目は正規表現を受け付けます. 正規表現の説明はインフォの中にあります.日本語訳はこちらを見て下さい.4.6 練習問題
隣の人と組になり,次のことを調べてみなさい.
4.7 プリンタに関するコマンド
% a2ps test
(中略)
cleanup
%%Trailer
docsave restore end
%
% a2ps test | lpr -Pnps15
%
% lpq -Pnps15
Sat May 8 16:31:32 1999
Starting job
Rank Owner Job Files Total Size
active s99000xx 402 standard input 59938 bytes
1st t99000xx 454 standard input 49987 bytes
%
% lprm -Pnps15 454
ccz02: dfA454uf085 dequeued
ccz02: cfA454uf085 dequeued
%
4.8 その他のコマンド
% yppasswd
yppasswd: Changing password for t99000xx
Enter login(NIS) password: 古いパスワードを入力
New password: 新しいパスワードを入力
Re-enter new password: 確認のためもう一度新しいパスワードを入力
NIS passwd/attributes changed on ns0
%
% finger t99000xx
Login name: t99000xx In real life: Tarou Fujisawa
Directory: /home/t99000xx Shell: /bin/tcsh
Never logged in.
No unread mail
No Plan.
%
% man ls
マニュアルを清書中です。しばらくお待ちください... 終了
ユーザコマンド ls(1)
【名前】
ls - ディレクトリの内容を一覧表示
(以下略)
SunOS 5.6 1997年5月3日 1
ユーザコマンド ls(1)
4.9 宿題
4.10 おまけ
[目次]
[前回]
[次回]
[重要語索引]
慶應義塾大学の授業以外での無断利用、複製はご遠慮下さい。
Copyright (c) 2000 慶應義塾大学