Windows Command Line Blog
devblogs.microsoft.com/commandline · Company blog · on HN since 2019
Microsoft's team blog on the Windows command line, covering terminal, WSL, winget, and related tools.
What HN saysHN commenters link it for its history of cmd and the console, and for WSL and winget announcements, including the AppGet credit controversy.
248HN people shared it
163linked it in comments
163stories submitted
4.8Kstory points
2 months agolast shared
2019people per year2026
Most-shared posts
- 1Announcing WSL 224 people · 53 points · first shared 2019 · 13 comments on HN
- 2The original source code of Microsoft GW-BASIC from 198310 people · 568 points · first shared 2020 · 266 comments on HN
- 3Af unix comes to windows10 people · first shared 2020
- 4Extended eol in notepad10 people · first shared 2019
- 5Winget Install Learning8 people · 44 points · first shared 2020 · 14 comments on HN
- 6A Deep Dive into How WSL Allows Windows to Access Linux Files8 people · 12 points · first shared 2019 · 1 comments on HN
- 7What's New in the Windows Subsystem for Linux8 people · 4 points · first shared 2020 · discussion on HN
- 8Introducing Windows Terminal7 people · 298 points · first shared 2019 · 121 comments on HN
- 9Windows Package Manager Preview7 people · 293 points · first shared 2020 · 161 comments on HN
- 10Windows Subsystem for Linux Is Officially Released7 people · 36 points · first shared 2022 · 6 comments on HN
- 11Windows Command-Line: Backgrounder (2018)7 people · 7 points · first shared 2019 · discussion on HN
- 12Windows Command-Line: Inside the Windows Console7 people · 3 points · first shared 2019 · discussion on HN
- 13Windows Subsystem for Linux September 2023 update7 people · 2 points · first shared 2023 · discussion on HN
- 14Windows command line introducing the windows pseudo console conpty7 people · first shared 2019
- 15Systemd support is now available in WSL6 people · 48 points · first shared 2022 · 5 comments on HN
What HN people wrote when they linked it
amiga386 · 2024-11-04
For anybody wondering "why couldn't they just...", there is a lot of complexity in TTYs and PTYs. The kernel is even involved in line discipline and job control. Those Ctrl+Z or Ctrl+C keys you press? The kernel gets involved.
It may seem strange that there's a process signal for window-size changes, but that's what was needed back in 1985. There's a similar dance with the Amiga's console.device, but both Unix and Amiga TTYs are better than Windows' terminals where there was no such thing as a PTY until Windows 10, you had to make direct API calls, and even now it's still pretty slow: https://devblogs.microsoft.com/commandline/windows-command-line-introd…
This page is a great overview pf the Unix TTY/PTY subsystem: https://www.linusakesson.net/programming/tty/
zamadatix · 2023-09-03
Agreed, PowerShell (and lately the new Windows Terminal app) are nowadays the defaults but cmd.exe and the legacy conhost are by no means deprecated. https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-b…
aneutron · 2022-05-11
There's an excellent blog post by the product manager I believe that explains the history of the CMD command, how terminal emulation works in Windows, and the work they were doing.
The way I understand this project is essentially "an interface" to the new ConPTY they developed (which IIRC is closed source, naturally).
That doesn't make it any lesser. I've used it since a build was available, 4 years ago or something. I love it.
EDIT: Found it ! https://devblogs.microsoft.com/commandline/windows-command-line-backgr…
LeonB · 2022-02-18
This caused a big splash at the time.
Here’s some links on ‘what happened next’ (though I’d love to know what else has happened since!)
- “Microsoft finally gives AppGet developer the credit he deserves” (https://www.theverge.com/platform/amp/2020/6/2/21277863/microsoft-wing…
Microsoft response:
- “winget install learning” by “Andrew” at Microsoft (https://devblogs.microsoft.com/commandline/winget-install-learning/)
signal11 · 2021-12-07
I suspect it's a mindset change. Not heeding demand and staying stuck in the past was how Windows became a punchline, although I'm sure enterprise customers loved it. At some point it did begin to change -- I suspect it hasn't changed enough for HN readers.
For instance, Unix LF support was added to Notepad back in 2018 (at last!) with a few registry switches for compatibility.[1]
[1] https://devblogs.microsoft.com/commandline/extended-eol-in-notepad/
efreak · 2021-11-13
Even if you're not using WSL, you've always been able to turn on case sensitivity via a registry key. This has not been recommended in the past due to possible issues with windows itself as well as third party software. This history is mentioned here[0]. Everywhere that mentioned a registry key seems to be referring to windows nfs server, not to general file access, however I know that SFU (Services for Unix) installer had an option to do so, so it's certainly possible.
As of sometime in 2018, fsutil can set specific directory trees to be treated case sensitive in Windows 10 without setting it for the OS. This ability is mentioned here[1]
[0]: https://devblogs.microsoft.com/commandline/per-directory-case-sensitiv…
[1]: https://docs.microsoft.com/en-us/windows/wsl/case-sensitivity#changing…
me551ah · 2021-01-21
I love chocolatey and use it quite a bit. But I like Arch Linux's AUR more because it contains way more packages. Though Microsoft also seems to be on their way to make their own
https://devblogs.microsoft.com/commandline/windows-package-manager-pre…
tyingq · 2020-05-06
Great question. They do have an in-depth blog post of how it works for WSL1: https://docs.microsoft.com/en-us/archive/blogs/wsl/wsl-file-system-sup…
Though it doesn't mention why they didn't try what you suggested.
The actual I/O doesn't seem so bad...like writing to a single file. It's things you mention, that create or modify lots of files (git clone, for example) that are really slow.
Edit: Apparently, the Windows side \\wsl$\ access does do what you're suggesting, sort of: https://devblogs.microsoft.com/commandline/a-deep-dive-into-how-wsl-al…
It's using a 9P network file server, derived from plan9.
russellbeattie · 2020-02-14
I've read all of the blog posts about the Windows Command Line [1] and the following posts and it still boggles my mind how long it's taking Microsoft to overhaul their command line and create a decent terminal emulator. They're on year 6 of this effort, if you didn't know. I don't think people at MS are stupid or anything - I obviously have no idea of the real complexity underpinning this stuff. But holy cow. This is a problem that's long been solved on other platforms and it just seems ludicrous.
1. https://devblogs.microsoft.com/commandline/windows-command-line-backgr…
sundvor · 2019-10-03
Cheers. I'm using WSL1 now, but am getting too old to join the Insider / Fast rings. Have done my fair share of Windows OS beta testing over the decades, starting with Win95. :)
As we're sharing links, this was a great write up:
https://devblogs.microsoft.com/commandline/announcing-wsl-2/
Can't wait for it to roll out officially with 20H1.
sixothree · 2019-10-01
What are you missing? Windows Console has undergone a complete overhaul in the last few years. With QuickEdit, copy and paste via keyboard, and reflow during window resizing, the Windows Console is pretty nice.
Also this might be helpful for anyone wanting to follow along: https://devblogs.microsoft.com/commandline/
filmgirlcw · 2019-09-18
Disclosure: I work at Microsoft but not on this team (though I'm a huge fan of their work), I'm just a giant monospaced font nerd.
Created for Windows Terminal [1], this looks like a great font -- playing around with it on my Mac now and it looks great in iTerm.
[1]: https://devblogs.microsoft.com/commandline/cascadia-code/
mattnewport · 2019-05-06
This article was linked from another article which I guess is where I saw the VM info:
> WSL 2 uses the latest and greatest in virtualization technology to run its Linux kernel inside of a lightweight utility virtual machine (VM). However, WSL 2 will NOT be a traditional VM experience.
https://devblogs.microsoft.com/commandline/announcing-wsl-2/
thesandlord · 2019-05-06
It seems that WSL2 is VM based instead of the WSL1 architecture:
https://devblogs.microsoft.com/commandline/announcing-wsl-2/
> WSL 2 uses the latest and greatest in virtualization technology to run its Linux kernel inside of a lightweight utility virtual machine (VM). However, WSL 2 will NOT be a traditional VM experience.
iscream26 · 2023-11-26
I wouldn't be that enthusiastic about it. Best I can say is that it is not terrible. In simplified terms, all it does is download exe files from URL addresses that it gets from yaml metadata files, and then silently executes them; which in turn means that it leaves all of the installer's checkboxes unmodified, cluttering your desktop with icons in the process. On top of that, Windows Terminal has been failing to update on my machine as of late. I don't think this should be the standard for a first-party package manager, but I'd say it's par for the course for Microsoft.
It's also worth noting that all of Winget's code was initially taken from AppGet, without much recognition.[1] Apparently Microsoft cared just enough about that detail to mention the project they forked in passing, as part of a list of third-party package manager projects for Windows.[2] This is why, IMO, you should always first consider a copyleft license for an open source project.
[1] https://www.theverge.com/2020/5/28/21272964/microsoft-winget-windows-p…
[2] https://devblogs.microsoft.com/commandline/windows-package-manager-pre…
EDIT: fixed vertical spacing.
DHowett · 2022-05-06
Another day, another Casey post dunking on my team. Hi!
This tweet misses the mark only a little bit; in a previous blog post, we apologized[1] pretty frankly to everyone involved in this discussion. I'll admit that we didn't list him by name, but neither did we list the other handful of folks involved. We should have. In turn, Casey rightly did not acknowledge it except to tell his followers that it was not a real apology[2].
This blog post is matter-of-fact, but Casey is right. However, he said himself that it was trivial to do this. Is it not acceptable that we use the same language?
Casey, I'm sorry. We made a mistake. I made a mistake! We didn't know what we didn't know, and thought we were clever enough to pass for it.
Using a texture atlas was a great idea, and we didn't know about it until you told us. We should do better to credit you.
[1]: https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-… (scroll down under the image)
[2]: https://twitter.com/cmuratori/status/1489406091318349826
--
(Note: I've iteratively edited this post, as it was originally a one-sentence diatribe written in anger. I originally asked, "I just don't know what else he's asking for here. Credit? Us to die screaming?" It was not a good look. It also originally contained "I get it, Microsoft sucks, we should all be fired, rah rah rah." As the message evolved, that became more and more out-of-place.)
waych · 2021-10-05
Neither cmd.exe nor powershell.exe are terminal emulators, rather they are both shells / scripting languages. The legacy looking crappy terminal window is usually conhost.exe.
Windows has a console interface unlike that found on Unix, using APIs rather than escape sequences to interface with the console. Also, its console implementation was historically coupled tightly with the conhost.exe application, which historically is both the terminal emulator and console endpoint simultaneously.
The blog series centered around
https://devblogs.microsoft.com/commandline/windows-command-line-inside… is the best resource I've found online that discusses Windows' legacy console support as well as some vision of how this subsystem has changed in the years since.
These changes improved OS interop, but also de-couple the legacy crap so that third party terminal emulators can be better supported on Windows generally (separating the console endpoint from the terminal display), allowing for the creation of `CreatePseudoConsole()`.
Prior to this, third party terminal emulators that wanted to support Windows apps had to run the legacy conhost.exe and shove the window way off the desktop (to hide), and then scrape the window for its contents. This is/was required so that the app has a console backed by a conhost.exe process (responding to the console apis). `CreatePseudoConsole()` fixes a lot of that mess.
pjmlp · 2026-08-20
tulio_ribeiro · 2026-08-03
This is obligatory read: https://blog.royalsloth.eu/posts/it-takes-a-phd-to-develop-that/
Later, Microsoft fixes the issue but fails to give Muratori credit. After backlash, they went back and gave him a footnote: https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-… (atlas release section)
GitHub thread in question: https://github.com/microsoft/terminal/issues/10362#issuecomment-862844…
And this gem: https://github.com/microsoft/terminal/issues/10362#issuecomment-862852…
knorker · 2026-06-18
Most top of mind was this tragedy that Microsoft somehow thinks is "good" and not something to be ashamed of at all: https://devblogs.microsoft.com/commandline/the-new-run-dialog-faster-c…
p_ing · 2026-05-03
People complain about telemetry but that’s how you get improved features.
https://devblogs.microsoft.com/commandline/the-new-run-dialog-faster-c…
mcc1ane · 2026-01-09
zadjii · 2025-11-11
Notably this article was written based on Windows Terminal 1.18. That was before WT 1.22, which included this PR: [^1] which roughly doubled the terminal's throughput. That combined with a couple of other PRs in 1.22 made some scenarios up to _16x_ faster[^2]
[^1]: https://github.com/microsoft/terminal/pull/17510
[^2]: https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-…
andyferris · 2025-09-17
I used to use XTree Gold, which was... golden. I always heard of Midnight Commander but never really got around to using it. I should probably fix that.
What I never got was why this style of TUI (MS edit.com, qbasic, etc) isn't really carried through in modern tradition? I really enjoyed these when when I was younger... yet even textual or ratatui apps don't really bring this interface to the terminal. (Or why screen-coordinate-based terminals aren't the norm to base TUI apps upon... this aspect just seems "obvious" but in this aspect modern terminal emulates seem lightyears behind MS-DOS, of all things).
Perhaps the rewrite of edit [1] will spawn a ressurgence of this TUI style?
[1] https://devblogs.microsoft.com/commandline/edit-is-now-open-source/
abhgh · 2025-06-21
I noticed the conflation of terms too but it seems to arise out of the original Microsoft announcement!
https://devblogs.microsoft.com/commandline/edit-is-now-open-source/
augusto-moura · 2025-06-21
I vividly remember using edit on an Windows XP (or was it a 98?) when I was a kid. It was one of those hidden commands that I learned while watching my uncles and father do trickery in CMD
Edit: just read https://devblogs.microsoft.com/commandline/edit-is-now-open-source/ and it seems that all 32bit windows versions had edit. I was probably using Windows XP 32 the last time I remember using edit
selkin · 2025-06-09
This doesn't look like WSL1. They're not running Linux syscalls to the macOS kernel, but running Linux in a VM, more like the WSL2[0] approach.
[0] https://devblogs.microsoft.com/commandline/announcing-wsl-2/#microsoft…
ChrisArchitect · 2024-11-19
dtagames · 2024-10-31
GitHub just announced Copilot for the Terminal[0] this week.
[0] https://devblogs.microsoft.com/commandline/github-copilot-in-windows-t…
grhmc · 2024-10-23
Yes!
1. Enable systemd: https://devblogs.microsoft.com/commandline/systemd-support-is-now-avai…
2. Install as normal:
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install --determinate
3. https://zero-to-nix.com/ :)