GNUWIN32を使う

受賞

日本時間の2000年7月7日8時58分付け。Links2Go Key Resource Award! Third in Unix Tools Topic.の受賞を知らせるメールが届きました。
メールの文面によると、優れたデザインのページとの評価です。でも人工無能搭載の検索ロボットに選ばれても・・・(バキッ)

やっぱりWindowsでも、UNIXツール使いたい。

やっぱりMS-Windowsでも、UNIXツール使いたい。いや、本当はWindowではなくLinuxとかバークレイが使いたいのだが、MS-Windowsじゃないと… ソフトウェア製品のサンプルなど、ただで使えるEDAが使えないので仕方無しにMS-Windowsとつきあっている。
そんなあるとき、Cygnus Cygwin32なるものがあることを知ってしまったのであった。
おお、GCCとか色々ある。これはダウンロードするっきゃない! てなわけである。

bashが使えるようになって、構造化シェルスクリプトが使えてうれしい。bashはインストール時のデフォルト・シェルになっています。
TERMCAPも付いていて環境変数TERMにターミナルの種類を指定しておけば、Emacsなキーバインドで行編集もできる!
などと、喜んでいたのもつかの間、Ctrl+Pをおしてコマンド履歴を手繰っていったら、俄かに動かなくなった。
ああ、なんてこったい。いったいどうしたんだよ!機嫌直してくれよ。
とか、動揺つつも、ハッと気がついた。 COMMAND.COMでハードプリントがCtrl+Pに割り当てられているのだ。
なんかゾンビのようにCOMMAND.COMのキーバインドが残っている。
うむむむ。おそるべしDOS PROMPTである。 だれか、Ctrl+Pの問題をDOS PROMPTのところで回避する方法を知っている人は教えてください。

親切な、すずき えいすけ さんからのお便りです。

ちなみに、C-p の 抑制は unix-like-tools の contrib の ctrp を 使うとできます。
・・・・・・
情報提供:PEZ PRODUCTION Web Page[すずきえいすけ@Hi-Hoねっと]さん

ということのようです。
提供された情報にあるCtrl+Pの抑制は、まだ試しておりません。
とりあえず、忘れないうちにメモしておこうモード。

コマンド・シェルはBashの他にもtcsh (chgtcsh80.exe)も付いてくるので、cshなひとも大丈夫。

なお、Cygnus ソリューションレッドハット社に吸収合併されました。

ここにある情報は、古いβリリースのときに書き起こされて、その後更新されておりません。
現在(2000年7月4日)では、βではなく正式なリリースになったバージョンが、入手できることでしょう。βの時代からくらべてだいぶ手直しした部分があるようですので、ここにある情報と食い違うところが多々あるかもしれません。
悪しからず。


入手方法

入手方法は、レッドハット社から、CD-ROMなどの製品およびサービスを購入できます。
そのほか、プロジェクト本家のhttp://sources.redhat.com/cygwin/ からもダウンロードできますが、ネットワークの混雑を避けるために、日本からのアクセスは、日本国内にある最寄りのミラーサイトから入手しましょう。
ということで、日本国内からは、RINGサーバを利用するのが便利でしょう。


使ってみよう

FTPサイトにFAQなどの簡単なドキュメントが一緒にあるので、それも一緒にダウンロードして読みましょうね。
英語で書いてあるから面倒臭いとは言わずに読んでみましょうね。

そうそう、森 啓介さんのWEBぺーじに、日本語訳のFAQがありますの。
訳者に感謝して読みましょうね。

インストール

インストールはダウンロードしたexeファイルをクリックするだけで、始まりますの。
うまくインストールできたら、スタートメニューにCygnus Solutionsというグループができますの。
ここに、cygwin B20っていう項目がありますの。
これを、ポチットナっていうぐあいに選択しますの。
そうすると、DOS窓が開いて、ユーザインターフェースになるBashというコマンドインタプリタ・シェルが動き出しますの。
ここが始めの一歩ですのよ。

Gnuwin32はBashというコマンドインタプリタ・シェルが標準のユーザインターフェースですの。
このシェルは、MS-DOSのDOSKEYやHuman68kのHISTRYのようなコマンド履歴と行編集を装備していますの。
キーボードの使い方は、GNU EmacsじゃなくってμEmacsのキー操作とほぼ一緒ですの。

Bashのキーバインド
キー操作 ^ は CTRLキーを押しながら・・・
M-はMetaキー(左のAltキー)を押しながら・・・ またはESCキーを押してから・・・
機能
^p 実行履歴を一つ古い方にさかのぼる
^n 実行履歴を一つ新しい方にくだる
^f カーソルを右に移動
^b カーソルを左に移動
M-f カーソルを次の単語へ移動する
M-b カーソルを前の単語へ移動する
^k カーソルの位置から行の終りまでを切り取る
^u カーソルの位置から行の先頭までを切り取る
^a 行頭にカーソルを移動
^e 行末にカーソルを移動
^y 貼り付け
^w マークしたところからカーソル位置までを切り取る
M-SPECE カーソル位置をマーク
^i
(TABと一緒)
コマンドラインにおけるファイル名の入力を補完する
^t カーソル位置のキャラクタと一つ前の位置にあるキャラクタを入れ替える
^r Reverce-i-serch
カーソル位置から前方方向に検索。ESCで検索モード終了
^l TERMCAP記述していないエスケープシーケンスなどの影響で、乱れてしまった画面の書き直しをする。

よく使うコマンド

コマンドは所謂POSIX系のコマンドの上位互換でありますので、UNIXの入門書のたぐいが参考になります。

コマンド名 コマンドの機能
ls ファイル名のリスト
cd ディレクトリの移動。ただ単にcdだけでEnterをたたくと環境変数の$HOMEにあるディレクトリに帰ることができる。
pwd 現在の作業ディレクトリ
rm ファイルの削除
mv ファイルの移動
mkdir ディレクトリの作成
rmdir ディレクトリの削除
find ファイルの検索
grep ファイルの中から文字列を検索。検索文字列に正規表現が使える。
gcc GNUのC/C++コンパイラ
make Makefileを走らす
uname ホストネームやシステムの種類、バージョンなどの表示
whoami 自分のユーザ名と、グループID:ユーザIDの表示
wc ファイルに含まれる文字数や単語の数、行数を数えて表示する
sh デフォルトのコマンドシェル
roff スクリプト系のワードプロセッサ
sed スクリプト系のストリーム・エディタ
chown ファイルの所有者を変える
chmod ファイルのパーミッションを変える
diff ファイルの差分を作る
patch diffの差分情報からパッチをあてがう
nice 指定したプロセスの優先順位を最低に変える(カーネルの実装に逆転現象がある場合では最も実行時間が長くなる)
tty ログインした端末のパス名を表示
echo 文字列のエコー
cat ファイルの連結。ファイルの表示
split ファイルの分割
cmp ファイルの比較
sync ディスク・キャッシュのフラッシュ
tail ファイルの後尾数行ぐらいだけ出力する
head ファイルの頭数行ぐらいだけ出力する。
hexdumpファイルを16進数で表示
touch ファイルのタッチ(ファイルの日付を変える)
sort 文字列などの並べ替え
make makefileに記述してあるファイルの依存関係から、元となるファイルが更新された(ファイルの日時によって判断する)ときにスクリプトを実行する

ファイルシステムのアクセス

MS-DOSのドライブ概念を隠蔽して、単一のルートディレクトリ '/'から総てのディス資源にアクセスできるようにできますの。
MS-DOSはドライブがいっぱいあって何処に入れたか判らなくなりやすいですの。
でも、これならば少し改善されますわ。

マウントしますの

BASH.EXE2.02$
とか、プロンプトがでているところに・・・
mount
と入力して、Enterキーを押してみてください。
何か印字されましたね。

Device           Directory           Type        Flags
d:\etc           /etc                native      text!=binary
\\.\tape1:       /dev/st1            native      text!=binary
\\.\tape0:       /dev/st0            native      text!=binary
\\.\b:           /dev/fd1            native      text!=binary
\\.\a:           /dev/fd0            native      text!=binary
d:               /                   native      text!=binary

ここで、Deviceとかいてあるところが、MS-DOSのファイルシステムでパスの実態名ですの。
Directoryと書いてあるとことがgnuwin32でアクセスするパスですの。
この場合だと、MS-DOSのD:ドライブのルートがルートディレクトリになっていることをあらわしていますの。
同様にMS-DOSのパスD:\etc\がgnuwin32では/etcということになりますの。
(この画面とあなたのPCでは表示される結果が異なる事があります)

さてさて、実際にマウントしてみますの。
たとえばMS-DOSのE:\ETCというパスがあって、これを/etcにしたい時は・・・
例によって、BASH.EXE2.02$とかプロンプトがでているところで・・・
mount E:\\etc /etc
といった具合に入力してEnterキーを押してみるとマウントが完了しますの。
もういちど、BASH.EXE2.02$
とか、プロンプトがでているところに・・・
mount
と入力して、Enterキーを押してみますと、現在のマウント情報が印字されますの。

アンマウントしますの

マウントしてある場所が気に入らないとか、ディスク・カートリッジを取り外す時とか、気が変わったからマウントする場所を変えたい時は、マウントしてあるパスを開放してあげますの。
BASH.EXE2.02$とかプロンプトがでているところで・・・
mountコマンドでマウント情報を確認しますの。
mount
と入力して、Enterキーを押してみてください。
何か印字されましたね。

Device           Directory           Type        Flags
d:\etc           /etc                native      text!=binary
\\.\tape1:       /dev/st1            native      text!=binary
\\.\tape0:       /dev/st0            native      text!=binary
\\.\b:           /dev/fd1            native      text!=binary
\\.\a:           /dev/fd0            native      text!=binaryd:               /                   native      text!=binary

たとえば、/etcをアンマウントしたいのならば・・・
BASH.EXE2.02$とかプロンプトがでているところで・・・
umount /etc
とか入力してEnterキーを押しますの。
そうするとアンマウントが完了しますの。
ここでもういちど、BASH.EXE2.02$とかプロンプトがでているところで・・・
mount
とか入力してEnterキーを押して、マウント情報を確認してみましょうね。

Device           Directory           Type        Flags
\\.\tape1:       /dev/st1            native      text!=binary
\\.\tape0:       /dev/st0            native      text!=binary
\\.\b:           /dev/fd1            native      text!=binary
\\.\a:           /dev/fd0            native      text!=binary
d:               /                   native      text!=binary

/etcがきえましたの。
これで/etcがアンマウントできた事が確認できました。

マウントしないでファイルにアクセスしますの

フロッピーやMOのような頻繁に取り外しをするデーター・カートリッジは、マウントしたりアンマウントするのが、少し面倒臭いですわ。
そこで、マウントしていないディスクドライブのパスにアクセスする方法がありますの。
たとえば、MS-DOSのC:\Windowsというパスにアクセスしたいのならば・・・ //C/Windows/
というふうに書きますの。


アプリケーション・ソフトウェア

様々な人がCygwin32で動くソフトウェアの開発や移植を行っています。
ftp.st.ryukoku.ac.jp/pub2/ms-windows/cygwin-ports/ に、移植されたソフトウェアたちやパッチがミラーしてあります。


関連WEBサイトへのリンク


著作権 1998年,1999年,2000年 ©大槻昌弥
著作者に無断で新聞雑誌や電子掲示板等への掲載や転載及び複製物の配布や販売などの営利目的へ利用する事を固く禁ずる。


このページに関する、ご意見ご要望ご感想は、連絡用フォームより送信願います。
なお、メールウェアが「HTMLを含むマルチパートMIME」を理解できませんので、iso2022-jpのプレーンテキストで送信願います。