2011/11/21
いますぐコマンドプロンプトを捨てて、Cygwinを使うべき10+の理由
Mac大流行なのでCygwinに需要ないかもしれないけど。一年間のCygwin体験をまとめてみた。今年1年で一番使ったツールで感謝してる。
CygwinはWindows環境にそのままLinuxのCUIツールを導入できる。もう「コマンドプロンプト」に拘る必要は薄くなりました。
僕は今年1年の一番の収穫はCygwinを使ったこと。
Cygwinを使うことでターミナルを使いこなせるようになった。そしてMacに移行してもターミナルさえあるから困らないと思えるようになりました。
コマンドプロンプトを捨てるべき理由
・SSHコマンドでリモートサーバにアクセスしても文字化けする。
・色・フォントがダサくて使い物にならない。
・コマンドが少ない。grep したい。findしたい
cmd.exeをすててMinttyを使おう。
Cygwinを使うと、minttyというPuttyベースの素晴らしい。ターミナルがついてきます。
CygwinはWindowsにLinuxのコマンド群を移植したものです。
Cygwin+Minttyにすると
- ターミナルが綺麗。
- 文字化け知らず
- Linuxのコマンドはほぼ使える。
- SSHが便利
- Rsyncが便利
- レジストリ読むのが便利。
- 簡単にコマンドが入る。
- javacなくても大丈夫。
- Vimとか便利になる。
- ddコマンドあるよ。
- SambaのNASも簡単よ。
- パス名は適当でいい
- iso作れるよ。
- passwdも変更できる
- 任意のマウントできるよ。
- windowsにもSSHログイン出来るようになる。
書いてたらきりがない。とにかく使ってみて。
一年間のCygwinで楽しんだまとめです。そしてCygwinのお陰でMacターミナルで困らなくなってCygwinには感謝してる。
1つずつ振り返っていく。
とその前に、まずコレだけは知っておくべき。
昔のCygwinはとても面倒臭いイメージがあり敬遠していました。ところが
1.7は、新しいCygwin
Cygwin1.5のイメージでいまのCygwinを語るべきではない
・レジストリ使わない。
・UTF-8になって最強。
詳しくはこっちを参照
・マウントポイントの情報をレジストリに格納しないようにした。代わりに /etc/fstab と /etc/fstab.d/$USER を使う。(ry
・ファイル名が現在の文字集合で表現できないならば、その文字は Ctrl-N + UTF-8 表現に変換される。これにより、現在の文字集合 (codepage) では正しく表現できないファイルにさえアクセスできるようになる。常に UTF-8 を使った正しい文字列を持つためには、環境変数 $LANG, $LC_ALL または $LC_CTYPE に正しい POSIX の値をセットすれば良い。
誰も知らなかった Cygwin 1.7 - BOOLEANLABEL
Cygwinの便利さを主張していく
一年間のCygwinの感動や便利さを振り返りながら、Cygwinの魅力を主張したい。
ターミナルが綺麗。
・半透明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。これがとてつもなく武器になりました。
- sshがそのまま使えます。
- scpでファイル転送が可能になりました。
- rsyncでファイルも転送できます。
もう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 できるんですよねー
レジストリの書き込みは、
regtoolなどのツールを使う。
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 カラーも使えるようになる。色が綺麗とは素晴らしい。
vimはttymouseなどをつけることで、gvimと変わらない性能がWindowsローカル出せるようになる。
ファイルパスの扱いも困らない。
それでもよく聞くのが、ファイルパスの扱い。
「バックスラッシュがねぇ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 が気持ち悪いなら見ないでいい。便利ですね
くわしくは、
SambaのNASも簡単よ。
パスの扱いがとても綺麗なのは、ローカルファイルに限ったわけでなくSambaパスも同じ。
cd //192.168.2.10/share/takuya
すごいねー。
結論、パス名は適当でいいのです。コマンドプロンプトより使いやすいよ。
これを最初に覚えれば捗る→" cygpath -ua "です。
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
になる。Linuxシェル環境と同じなのでシェルスクリプト使いまわせた
半角スペースのフォルダ名にも悩まされない
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
実行してUAC制御下でCygwinしてる。
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にSSHサーバーを立てたらはかどった。
reboot コマンド呼んだり、何かと便利。
まとめ
Cygwinで生活が楽になった。
もうcygwinのないWindowsは考えられない。コマンドやGnu bashや、 mingwよりCygwin一本で完成された環境が手に入るので便利だ。
Opera / EmEditor / Cygwin / LDAP とマイナーなものを愛する私。Cygwinは手になじむツールになりました。
ただし
コンパイルしちゃいけない。なれないうちはCygwinでコンパイルは辞めたほうがいい。もしやるならCorei7マシンを用意しておくこと。Core2でもかなり時間を無駄にするので絶対にオススメしない。
- Life like a clown - はてブ数が影響を受ける要因
- [cygwin] Re: いますぐコマンドプロンプトを捨てて、Cygwinを使うべ...
- ブックマクロ開発に - 「コマンドプロンプトからCygwinへ」の記事へ...
- ブックマクロ開発に - 「コマンドプロンプトからCygwinへ」の記事へ...
- [IT産業と経済]SIerが技術力を求めているという誤解
- 糸且之入Eヨ言己 - CygwinかVMwareか
- かみつぶて2 - cygwin 1.7.9
- AtAsAtAmAtArA - Cygwinデビューした
- polaroidoonの日記
- polaroidoonの日記 - Cygwin入れてみたメモ
- マイノート - いますぐコマンドプロンプトを捨てて、Cygwinを使うべ...
- 日々java - いますぐコマンドプロンプトを捨てて、Cygwinを使うべ...
- katryoの日記 - Rails3の学習、環境を整えるの巻
- ブックマクロ開発に - putty のマクロでファイル転送とコマンド実行...
- Twitter / @kuromac96
- Twitter / @amano225
- Twitter / @kaneshinth
- Twitter / @dos_jp
- Twitter / @silverflower
- Twitter / @knightyou
- Twitter / @ichyo
- Twitter / @sbwhitecap
- Twitter / @Fuh__
- Twitter / @roshian
- Twitter / @naka_chance
- Twitter / @nada_wagahai
- Twitter / @tagajo
- Twitter / @MasterLibrarian
- Twitter / @egoist008
- Twitter / @k2_yamamoto
- Twitter / @kyoheif
- Twitter / @kyoheif
- Twitter / @bethbeth321
- Twitter / @marrrrrrrrr
- Twitter / @rdm03
- Twitter / @poison1twit
- Twitter / @rairaiken31
- Twitter / @Takup
- Twitter / @noguccc
- Twitter / @katsuide
- Twitter / @asamin85
- Twitter / @unizyi
- へっぽこプログラマーの徒然日記 - 2011年11月22日のツイート
- Twitter / @deep_blue_ao
- Twitter / @GreenKei
- Twitter / @yamafa7
- Twitter / @locatw
- Twitter / @sts9090
- Twitter / @m5knt
- 4033 http://b.hatena.ne.jp/
- 2522 http://b.hatena.ne.jp/hotentry
- 1919 http://www.ig.gmodules.com/gadgets/ifr?exp_rpc_js=1&exp_track_js=1&url=http://www.hatena.ne.jp/tools/gadget/bookmark/bookmark_gadget.xml&container=ig&view=default&lang=ja&country=JP&sanitize=0&v=34d32e613e24821c&parent=http://www.google.co.j
- 1800 http://www.google.co.jp/url?sa=t&rct=j&q=cygwin&source=web&cd=6&ved=0CGMQFjAF&url=http://d.hatena.ne.jp/takuya_1st/20111121/1321865738&ei=vHPhTu2nMeWJmQXGiJX2BA&usg=AFQjCNFIzJuenxn994zMZhMUcxLgt_CYRQ&cad=rja
- 1637 http://www.google.co.jp/url?sa=t&rct=j&q=Cygwin&source=web&cd=4&ved=0CEIQFjAD&url=http://d.hatena.ne.jp/takuya_1st/20111121/1321865738&ei=rpvmTvTZHOXmmAWajPGcCw&usg=AFQjCNFIzJuenxn994zMZhMUcxLgt_CYRQ
- 1602 http://b.hatena.ne.jp/hotentry/it
- 1560 http://www.google.co.jp/url?sa=t&rct=j&q=cygwin&source=web&cd=5&ved=0CEkQFjAE&url=http://d.hatena.ne.jp/takuya_1st/20111121/1321865738&ei=OfLmTs3pEuLDmQXm7_GeCg&usg=AFQjCNFIzJuenxn994zMZhMUcxLgt_CYRQ
- 1212 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CFEQFjAD&url=http://d.hatena.ne.jp/takuya_1st/20111121/1321865738&ei=vW8fT_qdCbDumAXl6Lm9Dg&usg=AFQjCNFIzJuenxn994zMZhMUcxLgt_CYRQ&sig2=g661NG6bCXlGXoQT_q3JGw
- 1012 http://members.jcom.home.ne.jp/sarasiru/
- 934 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CE0QFjAE&url=http://d.hatena.ne.jp/takuya_1st/20111121/1321865738&ei=6VEjT7zZF_CZiQeAjJn5BA&usg=AFQjCNFIzJuenxn994zMZhMUcxLgt_CYRQ&sig2=JJCLA77nPV3seC_yBgoCow