16 comments

[ 2.9 ms ] story [ 44.1 ms ] thread
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.

More understandable for Cygwin, I suppose.

I could bet Powershell sucks because of too much "marketing expertise", much like Windows itself.
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.)

Why is MinTTY better than putty? Putty is terrific -- why would you want to put that in a clunky cygwin terminal?
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.
In general, the less performant the better. I can explain: Whatever I make run fast on my noteboook, will be wicked fast in the production servers.
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).
Well. I run emacs for my text editor (and everything else). The stuff I do in the CLI is usually sort of basic shell scripting and pushing code.

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...)

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.)

The uncanny valley of Cygwin still beats the valley o shadows that is vanilla Windows.

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.

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.
I'd suggest that you go through settings of any software that you use regularly, and try out stuff.