Making a better, somewhat prettier, but definitely more functional Windows Command Line
I've blogged before, in fact in 2004, (!) that Windows is missing the text mode boat. There is a massive opportunity for a great, nay, awesome and pretty, command line on Windows. If someone cracks this problem, they're gonna be heroes.
I love iTerm2 and its tabs, its font handling, its simple elegance. I want this on Windows. In 2011 I found Console2, and then in 2012 I moved to ConEmu, a great tabbed terminal for Windows. Even then, it's not "pretty." I love these guys, and the ConEmu is truly an amazing and configurable piece of software, but it was written by developers for developers. I have to change the fonts to Consolas for the main font and Segoe UI for the rest to make it tolerable. Am I being petty and focusing on looks? Absolutely. Gorgeous and functional software is why Mac companies like Panic exist. They make things that are pretty AND functional. Windows folks could definitely "lovingly design" stuff more.
Here's some command line utilities that augment and help - but don't yet complete save - the Windows Command Line.
I just learned about Clink and I'm hooked. It's hooked as well, directly into your cmd.exe window! *rimshot*
We all know that there's Cygwin for a bash-like experience in Windows, but Click is a small utility that brings some of those productivity and editing features into cmd.exe directly!
- Bash-like line editing from GNU's Readline library. Read more on Readline's keyboard shortcuts.
- Better path completion (TAB).
- Paste from clipboard (Ctrl-V). Oh yes.
- Support for the completion of executables/commands, and environment variables.
- Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
- Improved command line history.
- Persists across sessions.
- Searchable (Ctrl-R and Ctrl-S).
- History expansion (e.g. !!, !
, and !$).
The most significant change that Clink makes is to Tab Completion, moving to a more Bash-y "show them the choices" mode rather than the DOS-like "make them cycle through everything." Here I've pressed TAB over 2013-0 and Clink is showing me what I can choose from.
Surprise! You already have this on your Windows computer. Ya, it freaked me out also. You can even hide the script pane if you want (Ctrl-R) and just use PowerShell ISE as a console! You get auto completion (see the Directory intellisense below), coloring, aliases and all the power of PowerShell.
Sure, it's not bash, but that may be a good thing. You may not have been exposed to PowerShell and the prospect may frighten you, but try it for a bit. They've aliased the obvious commands "ls" does what you'd expect as does "dir." Moving around will feel like any command prompt.
Not to mention if you are using PowerShell you already get a full debugger experience.
It won't win any awards for good looks (again, I come back to the importance of fonts, whitespace, and good typography...get a designer) but it is extremely functional and you already have it!
I've talked about ConEmu before, but I'll bring some of that over here. ConEmu takes your command prompt and adds tabs, status bar details, admin tabs, freakin' taskbar progress bars on copies (which is hot), and deep support for FarManager (Norton Commander anyone?)
ConEmu is definitely a huge jump for console usability on Windows. The feature that really blew me away was Progress Bar integration. If you're familiar with Windows 7 you are likely familiar with the way that progress bars are overlaid over a Windows 7 Taskbar button. ConEmu looks at the current application running and some heuristics and overlays progress. Madness. Do a chkdsk and watch the progress bar. Love this little detail.
Git for Windows or Cygwin
If you want a Linux-like experience on Windows with a nice shell, Cygwin has long been a choice. However, since the release of Git for Windows most folks I know just install it and use the Git Bash. If you get Cygwin proper you'll get a much more complete "fake Linux" through their very competent set of command line tools, but for most, Git Bash will suffice.
What about SSHing? That's a fundamental part of command-line life for folks connecting to remote Unix machines. For me, I have a Linux farm I run on Azure that I often need to ssh into.
Random: I like to say I 'shoosh' into the machines, but folks keep looking at me weird. I thought this was a thing?
However, the SSH clients for Windows suck. Ok, they don't suck, but they are ugly. It's scandalous how ugly. Mad respect to PuTTY for being awesome and super functional, but it's like running Windows 95 in a window every time I launch it. Here's some better SSH clients, including a fork of PuTTY itself.
Bitvise SSH Client - more importantly, SSH from the command line
The Bitvise SSH Client is free for personal use and works great. There's a whole GUI, and, bless them, it's not pretty. However! There's also a command line version which is the REAL treasure. I just want to type ssh and be on my way.
In fact, I made a batch file called "ssh.bat" and put it in my PATH that just has this inside: "stermc %1" this means I can just type ssh user@hostname:port and be on my way. This is, for me, WAY easier than putty for most things. Bitcise is definitely worth checking out.
Kitty is a fork of version 0.62 of the original PuTTY. There's also a portable version that I've put in my Dropbox utils folder (which is in my PATH) so it's on every machine I have automatically. Kitty has some nice features like Send to Tray, transparency, session launching (so you don't need Pageant), and lots of little poweruser features like "rolling up" the app if you Ctrl-Click on the Title Bar.
Kitty also can integrate into your browser to handle ssh:// links, which is a nice touch.
What console app improvers have I missed? What do you use on Windows? Sound off in the comments.
Sponsor: Big thanks to the folks at RedGate for sponsoring the feed this week. Take a moment and check out their free download of Deployment Manager! Easy release management: Deploy your .NET apps, services and SQL Server databases in a single, repeatable process with Red Gate’s Deployment Manager. There’s a free Starter edition, so get started now!