Mac大流行なのでCygwinに需要ないかもしれないけど。一年間のCygwin体験をまとめてみた。今年1年で一番使ったツールで感謝してる。
CygwinはWindows環境にそのままLinuxのCUIツールを導入できる。もう「コマンドプロンプト」に拘る必要は薄くなりました。
僕は今年1年の一番の収穫はCygwinを使ったこと。
Cygwinを使うことでターミナルを使いこなせるようになった。そしてMacに移行してもターミナルさえあるから困らないと思えるようになりました。
Cygwin+Minttyにすると
- ターミナルが綺麗。
- 文字化け知らず
- Linuxのコマンドはほぼ使える。
- SSHが便利
- Rsyncが便利
- レジストリ読むのが便利。
- 簡単にコマンドが入る。
- javacなくても大丈夫。
- Vimとか便利になる。
- ddコマンドあるよ。
- SambaのNASも簡単よ。
- パス名は適当でいい
- iso作れるよ。
- passwdも変更できる
- 任意のマウントできるよ。
- windowsにもSSHログイン出来るようになる。
書いてたらきりがない。とにかく使ってみて。
一年間のCygwinで楽しんだまとめです。そしてCygwinのお陰でMacターミナルで困らなくなってCygwinには感謝してる。
1.7は、新しいCygwin
Cygwin1.5のイメージでいまのCygwinを語るべきではない
詳しくはこっちを参照
・マウントポイントの情報をレジストリに格納しないようにした。代わりに /etc/fstab と /etc/fstab.d/$USER を使う。(ry
・ファイル名が現在の文字集合で表現できないならば、その文字は Ctrl-N + UTF-8 表現に変換される。これにより、現在の文字集合 (codepage) では正しく表現できないファイルにさえアクセスできるようになる。常に UTF-8 を使った正しい文字列を持つためには、環境変数 $LANG, $LC_ALL または $LC_CTYPE に正しい POSIX の値をセットすれば良い。
誰も知らなかった Cygwin 1.7 - BOOLEANLABEL
ターミナルが綺麗。
・半透明Windowが綺麗。Operaは背景。
半透明の設定の細やかさが素敵
・フォントが綺麗。
コマンドプロンプト画面の汚いMSゴシックにバイバイ
写真はM2+ipaフォント。
WindowsVista/7のGlassデザインにもできる
文字化け知らず
bashに書くだけでUTF-8が使える。CygwinもSjisのイメージでしたがいまや、UTF-8です。
・ファイルがUTF−8
・コマンドの全部の入出力をUTF-8にできる。
・cmd.exeでsjisi使ってた頃には考えられない便利さ。
Cygwinをインストールしたらまず、utf-8を有効にする。
echo "export LANG=ja_JP.utf8" >> ~/.bashrc source ~/.bashrc
これでWindowsのファイル”名”がUTF-8で扱える。
でも、pingが化けるので対策。
Cygwin(msys)のUTF-8環境便利にするコマンドラッパー - ブックマクロ開発に
/usr/local/bin/ping #!/usr/bin/env ruby KCODE='u' require "kconv" cmd = File.basename(__FILE__) +".exe " + $*.join(' ') IO.foreach("| #{cmd} 2>&1 "){|line|puts line.kconv(Kconv::UTF8,Kconv::SJIS)}
それでも困る場合はnkfが使える。cygwinにNKFが無い。 - ブックマクロ開発に
これだけあればもう困らない。
Linuxのコマンドはほぼ使える。
linuxで便利なコマンドは大抵あります。ls / grep / find / xargs /bash / awk / csplit /split /cat /・・・とにかくほとんど使える。足りないものは諦めるしかないけど。基本的なものは全てある。
環境依存で使えなさそうなものも、実は使える
- ddも使える→ cygwin でCD-ROMを吸い出す.cygwin dd でCD-ROMイメージ化 - ブックマクロ開発に
- passwdも使える
- mkfsもある(何に使うかわからないけど)
- grep して uniq して cut するとか便利に出来ます。
- wget やcurlも使える。
- tar / gzip が使える
passwdでWindowsパスワードと連携するらしいぞ(使ったこと無いけど)
SSHが便利
シェル環境と、文字コードが整ったら、つぎはSSH。これがとてつもなく武器になりました。
もうPutty・Teraterm/Poderosa要りません。
rsyncでファイル転送できるようになるので、殆どの作業がターミナルで完結するようになった。
レジストリ読むのが便利。
レジストリを読み出すだけにとても便利。ちょっとあれどうなってたっけ。って値をREADするだけなのに、regeditだとUAC求められて困る。
でもCygwinなら簡単。読み出し可エントリを順々に読むだけならとても便利。
読み込みは普通のディレクトリをたどるだけ。
Cygwinだとレジストリたどるのがものすごく楽 - ブックマクロ開発に
takuya@letsnote:~$ ls /proc/registry/
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_PERFORMANCE_DATA
HKEY_CURRENT_CONFIG HKEY_LOCAL_MACHINE HKEY_USERS
ls できるんですよねー
GNUコマンドなど便利コマンドが簡単に入る。
setup.exe面倒なんですよね。ってときには、apt-cygでCygwinでもApt/yumっぽくインストールができるようになる。。 - ブックマクロ開発に
apt-cygで:検索→インストール
入れたいパッケージを検索して、インストールします。 apt-cyg find パッケージ名 apt-cyg install パッケージ名
ターミナルで完結します。
たとえば、git /hg などもこれをベースにしてどんどん入っちゃう。楽です。
しかも git / hg がUTF-8なので文字化け知らず。嬉しい。
javacなくても大丈夫。
各種コンパイラが付いているのでシンタックスチェックくらいならすぐ出来る。
たとえば、Javaのために大量にインストール面倒くさいし、シンタックスチェックくらいならGCJでできる。
授業の課題程度なら軽快でいい
takuya@letsnote:~$ gcj-3.exe -C Test.java
http://d.hatena.ne.jp/takuya_1st/20110613/1307994985
結構使える。
Vimとか便利になる。
ここまでで
・SSH経由でファイルが取得できるようになる。
・ファイル名が化けない。
・文字コードも安心。
・コンパイラやシンタックスチェックが出来る
ここまでとなると、Vimも動かしてgVimがわりに使いたくなる。。コーディング作業しても大丈夫ですよね。
コマンドプロンプトのVimよりは相当綺麗で見やすいです。
Mintty+Vimだけで相当使い込めるVim環境が出来上がる
vimdiff やら vim256 カラーも使えるようになる。色が綺麗とは素晴らしい。
ファイルパスの扱いも困らない。
それでもよく聞くのが、ファイルパスの扱い。
「バックスラッシュがねぇbashのエスケープじゃん?」
と言われた。でもそれ実はあまり気にしなくていい。
WindowはC:/Users/takuyaでもC:¥Users¥takuyaでも同じ。
だから困らない。
どうしても必要なときは変換すれば良い。専用のパス変換コマンドも付いている。
cygpathコマンドでWin<->cygのパス変換できる。
takuya@letsnote:~$ cygpath -w /home/takuya
C:\Users\takuya
同じってのを更に詳しく。
そもそもwindowsってシステムディスクのパス名は省略できるので、これらがが同じ
c:\users\takuya c:/Users/takuya /users/takuya
も同じなんですよね。Windowsは最初から、パスは柔軟でいいんです。
CygwinのRubyなら、どれでも好きな様に使える。
cygwinのrubyからファイルを開く時は、次のどれでもすべて同じ事になる。
open "/Users/takuya/test.dat" open "~/test.dat" open "C:/Users/takuya/test.dat" open "/cydrive/c/users/takuay/test.dat" open "C:\\users\\takuay\\test.dat"
これらは、全部 * 同じ * です。
/cygdrive が気持ち悪いなら見ないでいい。便利ですね
Windowsディレクトリ任意のマウントできるよ。
Linuxのマウントと、Windowsフォルダの関連付けは、べつにデフォルト/cygdrive にこだわらなくてもいい。
LinuxほHomeがいいって僕みたいな、変人は
Cygwinを使ってWindowsのHomeとLinuxっぽくHomeを共有する - ブックマクロ開発に
fstab書いてこんなコトした。
5 C:/Users/ /home/ ntfs override,binary,auto 0 0 6 C:/Users/takuya /home/takuya ntfs override,binary,auto 0 0
これをかけば
/home ====> C:\Users\ /home/takuya ====> C:\Users\takuya
半角スペースのフォルダ名にも悩まされない
fstabでマウントしちゃえば、解決。
僕はmklinkで, c:\Program files ← C:\programfilesにシンボリック・リンクしている。
これで安心ね。
sudo のあつかい
sudoも欲しくなる。最初の頃は sudo.jsとかUACダイアログを出す、コマンドラッパ書いてたんだけど、メンテがめんどくさなったので。
http://www.howtogeek.com/howto/windows-vista/sudo-for-windows-vista/
これを使って
sudo cmd.exe
sudo "cmd.exe -k mklink"
をやって、mklinkとか使う。
シンボリック・リンクはwindows提供のものを使うべき、Gnuのlnとは別物なので、困ります。でもmklinkでシンボリック・リンクつくれる
http://d.hatena.ne.jp/takuya_1st/20110830/1314683020
http://d.hatena.ne.jp/takuya_1st/20110705/1309896867
fdiskあるよ。
fdiskコマンドもあります。ダミーファイル作って遊べます。ddと組み合わせて遊べる。
MacのOpenコマンドに負けない
cygstartコマンドがMacのOpenに相当します。
cygstart . #エクスプローラー起動 cygstart test.txt # エディタ起動
alias open=cygstart で超便利。
まとめ
Cygwinで生活が楽になった。
もうcygwinのないWindowsは考えられない。コマンドやGnu bashや、 mingwよりCygwin一本で完成された環境が手に入るので便利だ。
Opera / EmEditor / Cygwin / LDAP とマイナーなものを愛する私。Cygwinは手になじむツールになりました。
ただし
コンパイルしちゃいけない。なれないうちはCygwinでコンパイルは辞めたほうがいい。もしやるならCorei7マシンを用意しておくこと。Core2でもかなり時間を無駄にするので絶対にオススメしない。