To Windows users, I strongly advise to use Cygwin instead of any other solution. You will have a functional Linux-like environment with bash, grep, sed, awk, python, rsync, scp, ssh, svn, git, X and a whole lot of other goodies. I hate to admit, but using Windows also allow you to use Tortoise[Svn|Git] and those two are really fancy tools.
I develop Django apps under Windows and, while Windows is still a kludge, Cygwin does a great job civilizing it.
Tip: Also install MinTTY and use it as your main "entry point" into Cygwin. Nobody deserves to use a Windows console.
I don't know why Cygwin and Windows Powershell cripple themselves with their lousy default shells. Neither project appears to have even minimal marketing expertise.
The shells are fine; it's the Windows console window that's the problem. I think both projects use it by default to ensure compatibility with programs that use the low-level console API. Sadly, there's no official or straightforward way for intercepting output from such apps.
There is an API for accessing a console's screen buffer, which the Console2 project uses to put a better UI on the console. That approach still has to rely on the console's substandard terminal emulation though.
(Btw, you should see MS's "Subsystem for Unix Application" for a truly atrocious default config. It doesn't even have command line navigation with the arrow keys.)
Putty is an excelent terminal, but that's it. For everything else, you are stuck with either a Windows command prompt (which is atrocious) and to have your civilized environment on other machine (usually not reachable when you are, say, on a plane).
The clunky Cygwin terminal (a bash running inside a Windows text window) is a thing of the past. I urge you to try either MinTTY (which is part of Cygwin) or Poderosa (mentioned in a comment to TFA) as shell environments.
Since I never used PuTTY as anything beyond a terminal, I don't know what magic it can do beyond what MinTTY does, but, since decent set of command-line environment is a requirement for me, PuTTY doesn't make life under Windows bearable.
I use coLinux to get around the networking issue. It's sometimes painful (you need to use a pretty old kernel), but it gets the job done, and it feels a little more performant to me. It's also nice because I can easily spin up a "server" if I need it for some special purpose.
Mintty is actually based on PuTTY's terminal emulation and Windows frontend parts, but it's tailored specifically for Cygwin. This results in smaller size and a simpler UI.
It also improves on PuTTY's terminal emulation in various ways, in order to make it more xterm-compatible. For example, it supports xterm keycodes for modifier key combinations such as Ctrl+Arrow.
There are also a few additional features such as mousewheel scrolling in 'less', window transparency, and the ability to place the command line cursor with a mouse click.
Mintty can be used for remote connections too, by simply running the likes of 'ssh' or 'telnet' inside it.
I use GnuWin32 to get most of my Linux CL needs. Past that, well, I usually SSH into a beastly Linux machine and Windows is just a glorified "thing that runs putty" (well and runs my music player and plays flash without sucking.)
The problem with that is that you only can access the decent environment (the beastly Linux box) from a place with good connectivity. I find it invaluable to have a stand-alone working environment inside my computer for those times the network is not available (or I don't want to be easily reachable or tempted to open the browser and come here).
I don't like using Cygwin on Windows because of the uncanny valley. It's almost like having a Unix shell, but I'm still on Windows, so things don't always work like I expect a Unix shell to work. I'd rather just use Putty to connect to development and experimental machines, and use Windows in the way Microsoft expects me to.
(Of course, I'd rather have either a Linux or OSX machine, but sometimes I can't choose.)
I guess the difference is that when I'm using a Windows machine, it's just a dumb terminal. I don't actually use that machine to develop or experiment, it's just how I access the machine that I actually use.
16 comments
[ 2.9 ms ] story [ 44.1 ms ] threadI develop Django apps under Windows and, while Windows is still a kludge, Cygwin does a great job civilizing it.
Tip: Also install MinTTY and use it as your main "entry point" into Cygwin. Nobody deserves to use a Windows console.
More understandable for Cygwin, I suppose.
There is an API for accessing a console's screen buffer, which the Console2 project uses to put a better UI on the console. That approach still has to rely on the console's substandard terminal emulation though.
(Btw, you should see MS's "Subsystem for Unix Application" for a truly atrocious default config. It doesn't even have command line navigation with the arrow keys.)
The clunky Cygwin terminal (a bash running inside a Windows text window) is a thing of the past. I urge you to try either MinTTY (which is part of Cygwin) or Poderosa (mentioned in a comment to TFA) as shell environments.
Since I never used PuTTY as anything beyond a terminal, I don't know what magic it can do beyond what MinTTY does, but, since decent set of command-line environment is a requirement for me, PuTTY doesn't make life under Windows bearable.
It also improves on PuTTY's terminal emulation in various ways, in order to make it more xterm-compatible. For example, it supports xterm keycodes for modifier key combinations such as Ctrl+Arrow.
There are also a few additional features such as mousewheel scrolling in 'less', window transparency, and the ability to place the command line cursor with a mouse click.
Mintty can be used for remote connections too, by simply running the likes of 'ssh' or 'telnet' inside it.
I use the Windows' offline files feature to access my features over a samba share as well.
(That being said, in general if I'm on my laptop, I do have good connectivity...)
(Of course, I'd rather have either a Linux or OSX machine, but sometimes I can't choose.)
And Cygwin does X. You can get xterm or rxvt running, if you like that 90's feeling. It can do Gnome and KDE, but that is stretching it a bit too far.
I used Emacs under Cygwin/X for a long time, but after having some problems, I went with the Windows native. Life is bearable, if not good.