NOV
24

Cygwinを捨てたWindowsのCUI環境

Published:2011-11-24 23:00:39 UTC

いますぐコマンドプロンプトを捨てて、Cygwinを使うべき10+の理由 – ブックマクロ開発に

「コマンドプロンプトからCygwinへ」の記事への補足 – ブックマクロ開発に

CygwinはWindows環境にそのままLinuxCUIツールを導入できる。もう「コマンドプロンプト」に拘る必要は薄くなりました。僕は今年1年の一番の収穫はCygwinを使ったこと。Cygwinを使うことでターミナルを使いこなせるようになった。そしてMacに移行してもターミナルさえあるから困らないと思えるようになりました。

cygwinが進化していることを知らなかったので、このエントリは勉強になったのですが、まぁでもラップトップ用のDDR3メモリ4GB*2ですら三千円程で買えるこのご時世、もうcygwinで無理にWindows上にUNIXライクなインターフェイスを作る必要はないんじゃないかな、と思います。CUI環境がほしければ、VirtualBoxにLinux入れてSSH、あとはMinGW/MSYSでカバーすればよい、というのが自分の意見。や、元記事もMinGWいいよね、と言ってますし、ケンカ売りたいわけじゃないです。念の為。あくまで個人の生活スタイルとか、趣味で決まる問題ですが、まぁ自分はこうしてるよ、というメモとして。

自分が手元にUNIXライクなインターフェイスを持った環境を求める理由は、生活環境(Explorerなんて要らない!全部CUIで操作する!みたいな)というよりは、Linux上で動かすアプリケーションの開発用、という面が強いのですが、そうした場合、開発環境は本番環境となるべく似た環境で揃えた方が、後でいざテストの段階になった時に環境起因の問題にぶつかりにくくてやりやすいです。一番良いのは本番環境と同じディストリ、同じパッケージをインストールした環境を用意することで、そういった点では、cygwinは、どんなに進化してもcygwinであって、Linuxではないので、使いにくいな、と。元記事の人はその役割をグローバルIPのついた外のホストに求めているようですが、何時でも接続性が得られるとも限りませんし、手元にあった方がSSHの反応良くて良いです。つまり、Cygwinの代わりにMinGW/MSYSを使い、外のホストの代わりに、VMを使っているイメージですね。

LinuxをホストOSとしてしまうのもいいな、とは思うのですが、その点については、自分はC#とVisual Studioが大好きという理由で、今のところ踏み切ってません。

そんなわけでWindowsから離れられない自分のCUIがらみの環境はこんな感じ:

  • VirtualBox
  • VboxHeadlessTray
  • Ubuntu Desktop
  • MinGW/MSYS
    • open-ssh
    • mintty
  • MsysGit
  • Putty
  • PowerShell

VirtualBox

image

言わずと知れた、ホストハイパーバイザ。VMware Playerと比べて、こちらのほうが自分はGUI的に好きで選びました。VMのNICは、eth0がNAT、eth1がHost Only Adapter、eth2,3は必要に応じて内部ネットワークに充てたり、という構成にしています。

eth0はVMからインターネットに抜ける用で、VMはDHCPでIP他を受け取るようにするとよいでしょう。但し悲しいかな、DNS Proxy的な機能は提供されていないようで、DHCPでは、ホストOSが使っているDNSのアドレスが直接振ってきます。そのため、ホストOSのネットワーク環境が変わると、名前解決が出来なくなります。その場合は、ゲストOS側で、例えばUbuntuなら

sudo dhclient eth0

とかやってやる必要があります。ちょっとイケてないですね。。Windowsのインターネット接続共有を使えば、解決できるかも?

eth1はホストOSからSSHする用で、こちらは固定IPにしています。このIPをWindowsのhostsファイルにIPとホスト名の対応を書いて多くと色々楽です。元記事ではVMware PlayerでTCPのコネクションがよく切れると言っていますが、VirtualBoxでは特に感じたことはないです。Mintty/MSYSからVirtualBox上のVMにSSHした状態でラップトップをスリープさせても、特に切れることなく復帰できます。

リモートデスクトップも、仮想マシンのディスプレイの設定のところから設定可能で、これを設定しておくと、後述のVboxHeadlessTrayでタスクトレイに格納した状態でも適宜画面を呼び出せて便利です。

VboxHeadlessTray

image

VirtualBoxをタスクトレイに格納可能にするユーティリティです。VirtualBox、タスクバーに常時出ているとちょっと邪魔ですしね。スタートアップで起動するようにしておけば、Windows再起動時にVMをいちいち立ち上げるよっこらせ感がなくなります。タスクトレイアイコンのコンテキストメニューから、VMにRDP張れたり、VMのサスペンドが出来たりするのも便利です。

Ubuntu

色々楽です。Cygwinだと、何かうまくいかないときに、Cygwinだから悪いのか、自分のミスかの切り分けが発生しますが、そういうのが無いのが何より良いですね。

MinGW/MSYS

  • msys-openssh

インストールはmingw-get installでmsys-opensshパッケージをインストール。Linuxで使っていた~/.ssh/configがそのまま持ち込めて便利です。msys-opensshパッケージではsshコマンドのほかに、scpとssh-agentコマンドも提供されており、scpでのファイル転送や、秘密鍵のメモリ上へのキャッシュが出来て便利です。ssh-agentといえば、lazy-ssh-agentという秘密鍵のパスフレーズの入力を必要になるまで遅延させてくれるスクリプトが非常に便利でLinux環境では重宝しているのですが、MinGW/MSYS環境でも使いたいよね、ということで、ちょっと手直しして使ってます。いやほんと、Linux使いもMinGW/MSYS使いもCygwin使いもみんな使うべき。便利だから。

#!/bin/sh 
# lazy-ssh-agent: 
#   run single ssh-agent (per host) on first ssh/scp/sftp attempt 
# 
# usage: 
#  first, place this script into a $PATH dir. 
# 
#  (in .{bash,zsh}rc) 
#   eval `lazy-ssh-agent setup ssh scp sftp` 
# 
#  (in .{bash_,z}logout) 
#   eval `lazy-ssh-agent clean` 
# 
#  (in .bash_profile ; when you are using zsh not as the login shell) 
#   ZSH=`which zsh` 
#   if [ -x "$ZSH" ]; then 
#       exec "$ZSH" -l 
#   fi 
# 
# Author : 7bit <http://nanabit.net/> 
# History: 
#   20090405 first release 
#   20111117 modified to run in MSYS by shiroica <http://blog.sharplab.net/>

umask 0066

SSH_AGENT_DIR=~/.sshagent 
SSH_AGENT_FILE=$SSH_AGENT_DIR/.$(hostname)

if [ "$1" = "clean" ]; then 
  ps -s -u "$USER" | awk 'NR!=1{print $1, $4;}' | grep -E '^[0-9]+ /usr/bin/ssh-agent$' | \ 
    awk '{print $1}' | while read LINE; do 
    kill "$LINE" 
  done 
  test -f "$SSH_AGENT_FILE" && rm "$SSH_AGENT_FILE" 
  echo 'unset SSH_AGENT_PID; unset SSH_AUTH_SOCK;' 
  exit 
fi

if [ "$1" = "setup" ]; then 
  shift 1 
  for SSHCMD in "$@"; do 
    echo "alias $SSHCMD='';" 
    echo "unalias $SSHCMD;" 
    echo "ORIGINAL_SSH_$SSHCMD=$(which $SSHCMD);" 
    echo "alias $SSHCMD='eval \$(lazy-ssh-agent) || ssh-add; '"'$ORIGINAL_SSH_'"$SSHCMD ;" 
  done 
  exit 
fi

if [ ! -d "$SSH_AGENT_DIR" ]; then mkdir -p "$SSH_AGENT_DIR"; fi

function reuse_ssh_agent() { 
  FOUND=0 
  # try to use existing ssh-agent 
  if [ -f "$SSH_AGENT_FILE" ]; then 
    F=$(cat "$1") 
    eval "$F"

    # kill extra ssh-agent 
    ps -s -u "$USER" | awk 'NR!=1{print $1, $4;}' | grep -E '^[0-9]+ /usr/bin/ssh-agent$' | \ 
      awk '{print $1}' | while read LINE; do 
      test "$LINE" -ne "$SSH_AGENT_PID" && kill "$LINE" 
      #echo "echo 'killed $LINE';" 
    done

    # find SSH_AGENT_PID process 
    FOUND=$(ps -s -u "$USER" | awk 'NR!=1{print $1, $4;}' | grep -E '^[0-9]+ /usr/bin/ssh-agent$' | \ 
      awk '{print $1}'| grep "$SSH_AGENT_PID" | wc -l) # should be 1 (header line, result line) 
  fi

  test "$FOUND" -eq 1 
}

reuse_ssh_agent "$SSH_AGENT_FILE" 
RET=$? 
if [ "$RET" -eq 0 ]; then 
  #echo "echo found: $SSH_AGENT_PID;" 
  cat "$SSH_AGENT_FILE" 
  echo "true" 
else 
  #echo "echo re-exec;" 
  ssh-agent | head -n 2 > "$SSH_AGENT_FILE" 
  reuse_ssh_agent "$SSH_AGENT_FILE" 
  #echo "echo 'and done $? ($SSH_AGENT_PID)';" 
  cat "$SSH_AGENT_FILE" 
  echo "false" # connect like: eval `lazy-ssh-agent` || ssh-add 
fi

psコマンドの出力まわりの扱いを変えてます。

  • msys-rsync

差分ファイル転送、便利ですよね。ちゃんとrsyncも提供されてます。

  • msys-mintty

image

MinTTY!これのAero Glass表示が使いたいがためにMinGW/MSYS環境を整えたといっても過言ではありません。いや、後で気づいたのですが、Puttyでも最近はAero Glass表示ができるようになったらしいですが。。

MsysGit

これはmingw-getコマンドで落ちてきません。MsysGitという別プロジェクトのようで、別途インストールする必要があります。どうしてこうなった。。こちらのGitBashというコンソールは使いにくいので、MSYSのMinTTYから使えるよう、MSYS環境側でパスを通しておいています。

Putty

「なんだよ結局Putty使うのかよ!」と怒られそうですが。うん、ルータやスイッチの設定とかでシリアルポートとる時に必要だから。。誰かMSYS環境だけでシリアルをとる方法をご存知の方、教えてください。そこでCygwinですよ!とか言われそうですが。。上でも述べましたが、最近のPuttyはAero Glass表示に対応しています

PowerShell

やっぱWindows使うならCUIの本命はPowerShellでしょう。Ctrl+Lとかが効かないのが辛いところですが、C#で書いたアセンブリとの親和性もよく、便利な筈です・・・・。すいません、あまり使ってません。。

 

以上、Cygwin捨ててもWindowsで幸せになれるよね、という一例として。

Comments :2

Asapawan 16-06-11 16:44:44 UTC

gih order anastrozole online – http://ddnmuqdcqdnwb.com, arimidex anastrozole buy, what are the side effects of anastrozole

NURO光 キャンペーン 17-07-03 22:17:10 UTC

ニューロ光は契約先によって、キャッシュバックキャンペーンが変わる事がわかっていたから、NURO光を契約するにあたって申し込み先を精査しました。

キャッシュバックは、公式ホームページでも30000円。3万円を超えるの金額を提示している申し込み先もあったのですが、ニューロ光に限らず光回線のキャンペーンは最大○○万円キャッシュバックと言いつつ、実際は様々な条件がついたりで、最大のキャンペーン額には届かない事が多かったです。

代理店で違いが出るのは、キャッシュバック金額と受取タイミング、条件ですので、ニューロ光公式サイトで特典の概要を掴んでそれを軸に公式サイトより条件がいい代理店を選択していくのが王道かなと思います。

販売代理店に問い合わせた結果、公式サイトを選択しました。

Trackbacks : 18

Trackback URL for this entry
http://blog.sharplab.net/blog/2011/11/24/cygwin%e3%82%92%e6%8d%a8%e3%81%a6%e3%81%9fwindows%e3%81%aecui%e7%92%b0%e5%a2%83/trackback/

Listed below are links to weblogs that reference this entry

ピンバック from プログラミング参考サイト | android manifest configChanges 13-10-21 00:56:36 UTC

[…] Cygwinを捨てたWindowsのCUI環境 […]

ピンバック from プログラミング参考サイトまとめ | android manifest configChanges 13-12-20 17:45:45 UTC

[…] Cygwinを捨てたWindowsのCUI環境 […]

トラックバック from gracefujimi.co.jp 14-09-14 17:37:54 UTC

gracefujimi.co.jp…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from Aoleon Book 15-01-03 21:46:51 UTC

Aoleon Book…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from dallas buyers club bookmyshow 15-01-06 14:11:32 UTC

dallas buyers club bookmyshow…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from Recommended Forex Trading Platforms 15-01-27 17:20:26 UTC

Recommended Forex Trading Platforms…

… – The greatest distinction between optionbit and all night long without missing out on great performing stocks that you are using. Only a few thousand dollars per week, and was ai… Cygwinを捨てたWindowsのCUI環境 – SharpLab. ……

トラックバック from storage el paso tx 15-02-05 06:47:12 UTC

storage el paso tx…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from stereo jennifer connelly denise richards fan camel spider energy drinks comedy or funny nasza klasa pl 넷마블 sean kingston 넷마블 microsoft crm crime scene cleanup milwaukee condos michigan jobs medical books startlogic tauck tours bad c 15-02-10 09:54:47 UTC

stereo jennifer connelly denise richards fan camel spider energy drinks comedy or funny nasza klasa pl 넷마블 sean kingston 넷마블 microsoft crm crime scene cleanup milwaukee condos michigan jobs medical books startlogic tauck tours bad credit lender…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from Aoleon 15-02-11 03:42:52 UTC

Aoleon…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from book review templates ks2 15-02-21 03:25:40 UTC

book review templates ks2…

Cygwinを捨てたWindowsのCUI環境 – SharpLab….

トラックバック from Can A Man Who Had A Vasectomy Get A Woman Pregnant 15-05-23 10:42:53 UTC

Can A Man Who Had A Vasectomy Get A Woman Pregnant…

… – So, keep your breath fresh with can a man who had a vasectomy get a woman pregnant, and use it on your face and ask one of the pedestal. The tone from the vh1 show the pick up l… Cygwinを捨てたWindowsのCUI環境 – SharpLab. ……

トラックバック from How Best To Lose Weight After Pregnancy 15-06-30 21:35:59 UTC

How Best To Lose Weight After Pregnancy…

… diet – Always try to have a body condition no one would be affected. Orlistat can be your best it is to meditate, while purchasing under garment. This is why it is designed for those p… Cygwinを捨てたWindowsのCUI環境 – SharpLab. ……

トラックバック from Feeling Bad For Someone Else 15-07-03 03:03:02 UTC

Feeling Bad For Someone Else…

… – So, without further adieu, let's delve into should the need to lean on at this stage. Whether or not if the person is hopeless and helpless causing them in reality this is … Cygwinを捨てたWindowsのCUI環境 – SharpLab. ……

トラックバック from binary options exceptionally 16-05-26 07:07:24 UTC

binary options exceptionally

Cygwinを捨てたWindowsのCUI環境 – SharpLab.

トラックバック from Jimmy Garoppolo Jersey 16-10-06 14:58:11 UTC

Jimmy Garoppolo Jersey

Cygwinを捨てたWindowsのCUI環境 – SharpLab.

トラックバック from Scott Tolzien Jersey 16-10-06 15:43:20 UTC

Scott Tolzien Jersey

Cygwinを捨てたWindowsのCUI環境 – SharpLab.

トラックバック from David Hawthorne Jersey 16-10-07 22:09:33 UTC

David Hawthorne Jersey

Cygwinを捨てたWindowsのCUI環境 – SharpLab.

トラックバック from Windows 8 Password Managers 16-11-15 20:41:42 UTC

Windows 8 Password Managers

Cygwinを捨てたWindowsのCUI環境 – SharpLab.