loading...

Choices for a console in Windows

katnel20 profile image Katie Nelson ・1 min read

I've spent a little bit of time lately looking into different consoles to use in Windows 10. The built-in cmd console is what I've used the most in the past.

Consoles tried are:

Windows System Command Prompt (cmd.exe) for simple batch operations
Windows PowerShell ISE (PowerShell_ISE.exe) for PowerShell scripting
Git for Windows (git.exe) for a bash shell (although I've been into using the TortoiseGit client more.)

Some of the newer choices I found were:

  • Windows Terminal - A Windows App from Microsoft in preview release that does Command Prompt and PowerShell
  • Comemu - A console emulator with a customizable GUI
  • Clink - Runs in the cmd console with some bash-like enhancements
  • Cmder - An all-in-one console that uses Comemu & Clink and does cmd, PowerShell and bash with extensive lua scripting

Now, I'm trying to decide which one is best for me. Cmder looks like a good choice, but I'll have to put learning lua on my to-do list.

Before I do that, I'm curious if there are others out there to try.

Requirements:

  • Must be free
  • Runs under latest version of Windows 10

Let me know what some of your favorites are and I'll post my opinion on what I like and what I decided on.

Posted on by:

katnel20 profile

Katie Nelson

@katnel20

Welcome tag moderator AKA Unofficial DEV cheerleader. While most of my friends are found on SnapChat or Tic-Toc, you can find me here. And I OOP, but I’m not a VSCO girl.

Discussion

markdown guide
 

There is an explicit difference between the ISE console and PowerShell's console application, btw.

You call it newer, but conemu has been around for over a decade (as long as powershell).

My personal preference is Windows Terminal - it keeps getting better with each release, but I'm sad about PSReadline bugs with its VTY emulator. At work, I'm not so fortunate to be on the latest Win10 build, so I use conemu there (the quake keybind feature is neat for productivity).

 

Thanks. I've tried both PowerShell consoles and use the ISE for debugging scripts.
Newer means "new to me". (I've been around less than 2 decades myself) 😏

 

It also gets confusing when talking about consoles vs terminals vs shells vs emulators, the list goes on, especially on Windows. In the brief experiments I've had on Linux, I really enjoyed using zsh, but powershell has the most "natural" learning experience to me (and is cross-platform with PowerShell Core and next year, PowerShell 7 and beyond).

On the vein of bash v. powershell, I ran across this article that kind of melds the two by making those Linux commands natively available through a powershell cmdlet-like experience:

devblogs.microsoft.com/commandline...

 

An interesting setup I've been looking into trying recently was something I've seen Scott Hanselman champion:

Using the Windows Terminal with WSL2 (so you get an actual linux shell from inside the ubuntu distro), and connecting VS Code to the same WSL2 instance, so the terminal in VS Code is also the terminal in the WSL.

It might seem like a really contrived example, and completely over the top depending on your needs, but worth checking out if you start getting into the windows/*nix compatibility issues, if you're doing some cross platform development, or if you are trying to program in a language that has better support in Linux-land.

Here's the link to the video if this setup piqued your interest:
youtube.com/watch?v=A0eqZujVfYU

 

Okay. So for that it looks like I have to install WSL, and Ubuntu, and then install WSL2, and then run out of VS Code.

Seems like a lot of work that's going to take some time.
Something to think about when I have some idle time (which are few and far between these days).

Thanks for the reply Aimeri and the video link.

 

Yup, that is pretty much the gist of it. Unfortunately this isn't a trivial setup, as you've said.

I used Cmder a lot coupled with the git bash shell for windows, and that setup was pretty solid too.
The cool thing about this is that any one developer's terminal and console setup will be completely different from one to another. My current setup on a mac is using zsh for the terminal shell, iterm2 for terminal, and I use applescript to actually configure pane splitting in iterm2, because I'm basically replicating what I used to have with Cmder when I was on windows.

It would be really interesting if you wrote another post a few months from now to describe all the combinations you tried and which ones you decided to stick with, and why. It's always nice to see what other people are doing. @aspittel had a really cool post where the community was sharing their own setup. Might be a cool place to get some more ideas as well:
dev.to/aspittel/what-does-your-ter...

I'll take a look at that post and make a mental note to do a follow up.

Another addition will be that PowerShell 7 is due to release soon. For those of us on Windows, that will be something else to learn if you do a lot of scripting in that environment.

Now that I think about it, if I wait too long to do the follow up, the whole console world could change!

 

I just use Console to run scripts I don't like and write a code directly on Console but VSC is one of the best powerful editor.

 

Are you referring to the Visual Studio terminal window?

 

Yes actually, because I will be able to decide about different editor types in one editor when I want to write python I choose easy python interpreter about other languages worked too just change terminal.

thepracticaldev.s3.amazonaws.com/i...

Yup, I see that (picture helped quite a bit)
Looks like the proper solution while coding in VS Code.

Yes it's proper solution.👌🏻😄

 

I have used Cmder a lot recently and generally I like it, with one or two exceptions:

  • The under-the-hood tools it uses can be really slow on Windows, e.g. switching branches on a large git repo takes a number of seconds (but is instant in normal command-line).
  • Some of the tools (e.g. Bash) are not feature equivalent with the regular Linux tools.

The thing I have found recently is, that working more closely with with developers who use MacOS has given me a better appreciation for CLI tools and a good shell.

And so, I am currently running WSL with Ubuntu18.04, and using Cmder to launch native bash.

It wasn't massively hard to set up.

If I was to make a prediction, I would say that we will see a convergence of development around Linux (whether or not you work on Windows) - it's driven by cloud platforms and containerisation, so being competent with Bash will be a valuable skill.

 

I have done some bash work before but nothing extensive. I’m try to do some things in Lua right now. I’ll let you know how things turn out.

 

Cmder is the best terminal emulator on Windows I've used by far. I haven't had a chance to use Windows Terminal yet, but hopefully soon.

 

Thanks John. I was using it today and still exploring all of it's features. There seems to be a lot there. Are you proficient in lua?

 

I am not, and I actually didn't even know it had that feature until I read your post! I use it for WSL and Git Bash and haven't explored it's other features.

Yeah, I haven't gotten to the WSL or bash windows yet. For bash, it tells me that it can't find the path to git-for-windows even though I have it installed. For WSL, it tells me to install Ubuntu-on-Windows.

I guess I have to do more setup work.
For now, I'm using the bash window that installs with git.

Ugh, yeah the setup can be a pain sometimes. I'm a Linux fan, but have to use Windows for work so I was so excited when WSL came out. It's been great

 

I’ve heard Hyper is a good one. Never tried it because I’m on Mac and there’s iTerm 2 which is just awesome especially combined with oh-my-zsh and a custom theme 😊

 

My experience of Hyper was that it was about an order of magnitude slower than iTerm2. That was about a year ago and it might have improved, but I think it's likely to be just as slow.
When I say slow, I mean that doing something like an ls -R, you can watch the screen updates ripple down as it moves one line up at a time.

 

Hyper looks fancy, but the performance is quite bad, especially on the corporate machines with firewalls, proxies and other limitations users have by default. I can recommend Babun, it is upgraded Cygwin terminal with some nice out of the box features (zsh, oh-my-zsh, python, pre-configured .zshrc and .bashrc etc.). However oit can also be quite slow, especially in the corp environment where you have many limitations and sometimes you cannot even get admin rights. So far my best experience was with Cmder + Chocolatey package manager + some extra downloaded GNU utilities like curl, xmllint, windows version of vim and other things.

 
 

That’s what I’m doing right now.

 

good choice
now enjoy and use golang for everything in your life

 

I would try using WSL, its fantastic.

 

It's really quite buggy. And so slooooow. I know it's a "preview", but people have been knocking out terminal emulators for years which work way better than the MS attempt.

It is, still the best you're going to get on Windows I think. I've tried a few, and they all fall down at something or break with Windows updates from time to time.

 

Looks like that means loading a Linux distro. Which one do you use?

 

Ubuntu, so I can use apt and snap package managers.

 

I'm a newbie when it comes to software. I've always been into hardware. I just recently started to open up my cmd. I'm looking forward to collaborate with you and everyone else.

 

Welcome Herman. The cmd window is a good place to start. But after a while you might be looking for it to do more.

 

Back when Windows was my primary OS, I used cmder a lot. Definitely recommend.

 

Thanks Ryan. The prompt looks weird with that lambda symbol on it’s own line. I already wrote a short lua script to change that. Looks like I’ll be experimenting some more with Cmder.