CodeBuilder FAQ Version: 2.28 (1998-11-08)

2. 基本編

2-1: マックのファイルの扱い

マックと一般的な UNIX のファイル構造は、かなり違います。このために、 CodeBuilder は、いくつかの仕掛けを持ち、また、コマンド(プログラム)も 用意されています。

ファイル・システムの違い:

CodeBuilder は、マックのファイル・システムの上に、独自のファイル・システム "FFS" のディスク・イメージを置いて、その中で動きます。

  マックのファイル・システムの名前: HFS; Hierachy(?) File System
  CodeBuilder のファイル・システムの名前: FFS; Fast File System

マックのファイル・システムを「マウント」:

CodeBuilder では mount コマンドによって、マックのボリューム(ディスク パーティション)を共有できるようになります。つまり、マック側のファイル を読み書きできます。いくつかのボリュームは、起動時に自動的にマウント されます。

  ディレクトリ  内容
  ------------  ------------------------------------------------------
    /           ルート・ディレクトリ(ファイル "CodeBuilder_FFS" を指す)
    //          CodeBuilder がインストールされているボリューム
    /bootvol    MacOS の起動ボリューム
    /usr/X11R6  X-Window ディレクトリ(ファイル "X11R6_FFS" を指す)

逆にマック側からは、CodeBuilder の FFS にはアクセスできないようです。

別に、CD-ROM 、フロッピー、MO、zip 等のメディアも扱えます。

マック→FFS:

マックのファイルを FFS 内にコピーすると、データ・フォークとリソース・ フォークをひとまとめにした、 AppleSingle 形式のファイルになります。 これからデータ・フォークだけを取り出したりするコマンド群が用意されて います。

FFS→マック:

CodeBuilder で FFS 内で作ったファイルを、マック側にコピーすると、 クリエータ: MUMM、タイプ: BINA のリソース情報がひっつきます。

それがテキスト・ファイルなら、 mactext コマンドで「共通テキスト形式」に 変換できます。それはタイプ: TEXT で、マック形式の改行コードになります。 CodeBuilder からこのファイルを見ると、 UNIX 形式の改行コードに自動変換 されます。

マックのボリュームにある UNIX フリーソフトをコンパイルしたい:

  % cd unix_dir                         UNIX 側の作業ディレクトリへ
  % cp /mac_volume/filename.tar.gz  .
  % dfork -i filename.tar.gz            (他にも方法はありますが)
  % tar tzvf filename.tar.gz            ファイル一覧。 CTRL-C で中断可
  % tar xzvf filename.tar.gz            ファイル展開
  % cd filename                         そのソフトのディレクトリへ
    README とか INSTALL とかを読む。
    xmkmf とか ./configure とか make とか...
  % su                                   スーパーユーザになる
  # make install                         インストール
  # exit                                 一般人に戻る
  % _

UNIX 側で作ったテキスト・ファイルを共通テキスト形式にするとき:

  % cp filename /mac_volume/            マックのボリューム内にコピー
  % cd /mac_volume
  % mactext filename                    改行コード変換、リソース情報付加。

注意! mactext コマンドは、マックのボリューム内でしか有効に働きません。 mactext は、シェル・スクリプトです。

マック側で作ったテキスト・ファイルを共通テキスト形式にするとき:

  % cd /mac_volume
  % finderinfo -C MUMM filename
  % sync

注意!finderinfo コマンドもマックのボリューム内でしか有効に働きません。 注意! マックと CodeBuilder をいったりきたりするときには、ファイル・ システムの一貫性を保つため、こまめに sync しましょう。

手抜きエイリアス:

筆者は、タイプ量を減らすため .cshrc に下記の様な alias 設定を追加しました。

    #
    # Kimura
    #
    alias fi 'finderinfo -b \!*'
    alias ft 'finderinfo -T TEXT -C MUMM \!*; sync'
    alias fb 'finderinfo -T BINA -C MUMM \!*; sync'
    alias mact 'mactext \!*; sync'

2-2: 特殊コマンドのクイック・リファレンス

ファイル変換:

  % finderinfo /mac_volume/filename     マックのファイルの属性を調べる。

% finderinfo -T TEXT /mac_volume/filename マックのテキストファイルを、 % finderinfo -C MUMM /mac_volume/filename 共通テキスト形式に変換。 % sync

% finderinfo -C MUMM -T TEXT /mac_volume/filename 一度にやってもよい。 % sync

% finderinfo -T BINA /mac_volume/filename マックのバイナリ・ファイルを、 % finderinfo -C MUMM /mac_volume/filename UNIX でもリソースを無視して % sync 扱えるようにする。

注意! finderinfo コマンドでは、クリエータが MUMM のファイルには、ファ イル・タイプは TEXT あるいは BINA しか指定できません。その他のタイプを 指定しても無視されます(エラー・メッセージは表示されません)。

  % cd unix_dir                         FFS 上で...
  % dfork /mac_volume/filename filename.dat  データ・フォークだけ、
                                             FFS 上にコピーする。

% dfork -i filename_from_mac マック側からコピーしてきた( AppleSingle 形式の)ファイルから リソース情報を切り捨てる。

% dfork.text /mac_volume/filename | grep UNIX テキスト・データを取り出す。

% rfork /mac_volume/filename filename.res リソース・フォークだけ、 FFS 上にコピーする。

% rfork -i filename リソース情報だけにする。

% mactext /mac_volume/file_from_unix 共通テキスト形式にする。 ( FFS 内では無効)

% unixtext /mac_volume/file_on_mac

% man restool リソース情報を操作する restool のオンライン・ マニュアルを表示する :-)

各種メディアのマウント:

  % su
  (スーパーユーザのパスワード入力)
  # mkdir /mac_volume
  # mount "Macintosh HD" /mac_volume    マックのボリュームのマウント

2-3: ログイン・シェルを変えよう 〜 tcsh 編〜

コマンド・ラインでサクサク作業するには、編集機能を持ったシェルが 必需品です。ここでは筆者がどの UNIX 環境でも(なければ make して)愛用 している tcsh を中心に説明します。

とりあえず tcsh に:

CodeBuilder には、4 種類のシェルがあらかじめ含まれています。ログイン・ シェルとして使うには /etc/shells ファイルに登録されている必要があります。

  % cat /etc/shells     ← /etc/shells の内容は...
  #
  # List of acceptable shells for chsh/passwd -s
  #
  /bin/bash             ← B-shell 系 GNU 謹製高性能シェル
  /bin/sh               ← B-shell そのもの
  /bin/csh              ← C-shell そのもの
  /bin/tcsh             ← C-shell 系高性能シェル

スーパー・ユーザ( root )が vipw コマンドで編集するパスワード・ファイル に、各ユーザのログイン・シェルの設定があります。スーパー・ユーザでなくて も、各ユーザは自分のログイン・シェルを変更できます。

  % chsh    ← ログイン・シェル、ユーザ情報の変更コマンド
  Changing user database information for guest.
  Shell: /bin/csh    ← ここを /bin/tcsh に変更
  Full Name: Mr. Guest
  Location: 
  Office Phone: 
  Home Phone: 

あ、vi エディタは使えますよね?

tcsh を作る:

筆者の環境で付属の csh、tcsh で `コマンド` が使えなくなってしまいました。 このたび、tcsh を自分で make したら直ったので、報告させていただきます。

tcsh はフリー・ソフトウェアでソースが公開されています。オープン・テクノロ ジーズ社の FTP サイトにも MachTen 用のパッチとともに、tcsh-6.06.tar.gz が 置いてあります。

    <ftp://product.opentech.co.jp/machten/applications/MachTen_CD1J/tcsh/>

(カレント・ディレクトリは CodeBuilder 側のファイル・システム上とすると)

  % finderinfo -C MUMM -T BINA //mac-volume/tcsh-6.06.tar.gz
  % finderinfo -C MUMM -T TEXT //mac-volume/tcsh-6.06.patch

% tar xzvf //mac-volume/tcsh-6.06.tar.gz % cd tcsh-6.06 % vi README ← 作り方をよく読もう! % cp config/bsd4.4 config.h % cp Makefile.std Makefile % patch -p0 < //mac-volume/tcsh-6.06.patch ←パッチ当て % vi config.h ← `command` ができない対策 #define VFORK ← この行を見つけて、下記のように変更 ↓ #undef VFORK % make (かなり時間がかかる) % ./tcsh (いろいろと動作確認) % exit % su (スーパー・ユーザになって) # mv /bin/tcsh /bin/tcsh.orig # cp tcsh /bin

日本語対応:

日本語対応( SJIS )パッチをどこからか入手して、さらにマック側のファイル名 のデコード・ルーチンを自作すればいいだけです。誰かやって :-)


CodeBuilder FAQ Version: 2.28 (1998-11-08)