I know we all enjoy being nerds and using commands (H4ckerman). But now that everything is either a gui or web based, is there really any use to terminal commands?
For example, on windows I never used powershell or cmd hardly ever. I realize now I probably could have. But Linux just drives me to use it more, which i like anyway (because let’s be honest, it makes us feel superior)
Pipes etc.
A GUI can’t combine commands from several different programs and move data to and from and use that with the ease and explicit nature of a terminal.
GUIs can use pipes just fine. You tell it to write to a named pipe or similar device and the program on the other end will happily consume it.
On windows, sfc /scannow, dism /Online /Cleanup-Image /RestoreHealth, and dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase are pretty much required to prevent that mess from blowing up…
I’ve also had to use the command line to do some Exchange 365 stuff like forcing immediate archive population on 100% full inboxes whose users refused to delete any emails from…
When I would develop on windows I used the terminal a lot and it’s not really changing. Guis are great for something’s but when you’re working with things that have to run without a gui, there’s just no substitute to a terminal. I’m not using a terminal cause it makes me feel cool. It’s just the only tool for some jobs. Not because a GUI hasn’t been made, but because a purpose made GUI for the task would be a waste of time and not as good.
I have yet to find a gui that allows me to do the equivalent of running a find command with a regex to find specific files and run a set command to search and replace a string in one go.
On Windows, there are a bunch of search programs like Everything that can probably do the search. For search and replace, most text editors like Notepad++ can do that.
On Windows, I used to install stuff using winget install whatever.
Waiting for the MS Store to load was a freaking anxiety needle injected into my veins. Unacceptable.
Bazaar on the other hand, it’s glorious. Blazing fast. So, I go with a GUI.
Also, there are tools like pandoc, ghostscript, caddy, imagemagick, and a gazillion others that are very powerful and quicker to do their job than waiting for a GUI to load.
And then, sometimes, there’s just no other way. Maybe it’s part of installing or updating something, or stuff like that. But a casual will either wait for a GUI, or just not do that.
I don’t think using the terminal is aspirational, it’s practical and it’s value is clear.
IT guy here. The CLI is not something I’d expect the average computer user to use at all. However, for power users and professionals it’s a force multiplier at least, and a prerequisite often.
There are several reasons for this. Firstly, IT system and server administration, in the cloud or your own hardware, is often done via the CLI. This is because it’s not that common or convenient to hook up every server in a rack to a monitor to click on stuff. But dialling into it remotely via SSH or even a serial port to perform bootstrapping procedures, troubleshooting and even routine management tasks sometimes, is very quick , easy and reliable.
The other main reason is automation. If I buy 10 servers to power my website, they all need installing and configuring a whole bunch of software, e.g. an Apache web server, DNS, SQL, Active Directory, AV, firewall, networking, and a host of other services. Now imagine doing all of that by hand. You don’t even need to be a professional sysadmin installing server racks for a living for this to be important. Even if you run a couple desktop/servers/Raspberry Pi/NAS at home, they’ll need updating, upgrading or replacing every once in a while. Having to click your way through everything every time you need to (re)configure them gets old very quickly.
GUIs are extremely poor at providing a consistent, predictable, automatable way to do things. They force you to do mostly everything manually and be present to supervise the whole thing. With the CLI you can script out pretty much any task and let it run in the background while you go do other things. I really don’t see CLIs going anywhere anytime soon. I’d say it’s actually the opposite. PowerShell was Microsoft’s way of acknowledging this very fact years ago. The primitive Windows Batch scripting language wasn’t cutting it for anyone, especially Windows Server users who had to painstakingly configure every Win Server install they did manually through a GUI wizard.
Aside from what the others said, I think a big advantage for CLIs is also that they’re a lot quicker to develop and extend with functionality. So, while yes, there are GUI options for lots of tasks, if you need to do niche things, there is still a higher chance for there to be a CLI for that, or for a more general CLI to be feature-rich enough that it covers your niche use-case.
Aside from the automation, which has been mentioned already, I tend to seek out terminal based solutions and heavily use it over GUIs because:
- my wrists tend to hurt after using a mouse for too long (mouse use is now limited mostly to browsing the web and spreadsheets)
- lower resource footprint means I can do more with less hardware
I have to concatenate off reports for part of work duties. The GUI tools in Adobe or other PDF editors are slow.
The solution was add Linux WSL2 in Windows. And use qpdf
I can now just open the Linux terminal, type qpdf --pages File1.pdf 1-z File2.off 1-z (etc) – Outputfile.pdf
It is instantly concatenated.
And next report time its just grabbing command from history and editing file name or page numbers needed
Even outside of scripting and so forth, which I use a lot, often it’s far easier and faster to just cook up a wildcard string or a regex or whatever when you’re faced with a folder with eleventy bazillion files in it, only some of which you’d like to move somewhere else.
Yes, you could point-and-click on all of those for the next hour and a half plucking them all out of your file browser window. Me personally, I’d really rather not.
Other similar use cases abound.
You can take my terminal when you can pry it from my cold, dead, hands.
Any one-liner you put together, you can re-run trivially. You can rerun it with modifications trivially. You can wrap it in a for loop that runs it with different parameters trivially. You can stick it in a file and make a reusable Bash script. It’s far easier to show someone else how you did it (just copy/paste the text of your terminal session) than dozens of screenshots of a point-and-click adventure (and not in a good way) GUI app. Bash commands are easier over SSH than GUI apps over RDP or VNC or whatever. You can’t script a GUI app.
I seriously find myself wondering why someone would use a GUI for something they can do with a terminal. Learning curve is the only reason I can think of.
I frequently find myself creating tools that let me do with a terminal what I formerly could only do with a GUI tool.
I use the terminal because text errors are much easier to parse, research, and discuss than GUI error states.
also, it looks nicer than most GUIs, because of the great color schemes and CLI app designs that people make for us.
also I use the fish shell and emacs and I have a lot of custom scripts I’ve built over the years, so my user experience is a delight, and my automation capabilities are greater than they would be if I preferred GUI-based solutions.
While this feels like bait, I’m going to take it. Yes, there is a huge benefit to learning and using a terminal if you use a computer as a tool for creating and working instead of passively consuming entertainment. Organizing and searching files of any sort, building applications, writing without distraction, working with remote devices, and just generally using your computer as a tool instead of a fancy TV are all made easier, faster and more efficient if you can use a terminal. The unix philosophy gives you the ability to do things by stringing together a few commands that you might have to find a specialized program for, if it even exists in GUI land.
That’s not to say the GUI’s aren’t great for a lot of things. They are! But they also lock you into doing things in a few predetermined ways rather than letting you develop the skills and techniques for exploring new spaces.
Terminal is nice for a lot of repetitive tasks that would be a chore via GUI.
Even though I’ve been a Linux user for almost 20 years >!(fuck I feel old)!<, I mostly use GUI stuff. Terminal is super neat for doing batch stuff, I’ve even learned how to do some stuff for windows for whenever I inevitably get a call from family to fix their shit. I was pleasantly surprised with
wingetand I keep a .txt file to batch install common general use apps for them, same as I keep some dotfiles for getting my preferences over on a new PC or install.I already know what I want the computer to do: why do I have to search with my slow-ass eyes through what someone else decided was the optimum workflow to get the job done?




