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)
Unless we’re in a simulation, very yes.
Normal people don’t seem to realize this but the reason developers swarmed to Mac OS X over Windows when given a choice for work laptops is that Mac OS X has a built-in POSIX shell.
CLI is and will always be more expressive than a GUI. Some “web apps” have even tacitly acknowledged this by adding terminal emulators to their web apps.
GUI change but the command line lasts forever. The GUI will change from version to version for any program but if you have a script or CLI that will last.
Used the terminal yesterday to search my
piracydrive full of movies and shit in a directory structure, find any duplicate files by size/md5, and then it piped the results into my terminal editor of choice where I commented out the lines corresponding to files to delete, then it deleted them for me. Saved a couple hundred gb, and idk how to do it through a gui (besides the insurmountable task of clicking through all those folders.)Not only that, but turned out I had a bunch of dups in my image folder too that I wasn’t prepared to deal with right then, so in vim I just :/folder and n n n n repeatedly to get to the next relevant entries, made it even faster.
Took maybe 5min (not counting wait time, I ran it, made dinner, and came back and it was ready for me.)
Now, I’m going to peek at that forgotten picture folder in the GUI because I have NO idea what’s going on there and it’ll be helpful for me to get eyes on it instead of reading filenames, so I do use that too, for me it isn’t all or nothing, it’s both, some things are just better CLI and some are actually better GUI, and some can be either depending on how I feel today.
I know people who work in windows environments as developers or admins using power shell a lot. They can automate sooo many things through scripting. I work in IT too but this advanced scripting shit is still witchcraft to me. But this is real world usage which makes digital infrastructure management work a lot more efficient. Especially if you have repetitive tasks say on different machines. With GUI you would just be clicking through the same shit over and over again (while slowly loosing your mind).
Hey it’s me! My job is basically spending hours per day writing automations in powershell. Our prod environment encompasses thousands of servers + separate windows server environments for testing and Dev.
A command line is WAY faster than using the mouse, provided you can type fast enough. A thing I’d like to add is that, to me, all those shiny pointy-clicky interfaces are little more than a distraction: they literally slow me down and prevent me from doing real work. Of course, this last bit is a very personal opinion and YMMV.
this, I hate using GUIs - they’re slow and inconvenient in so many ways
also, terminal commands can be thrown in a script to easily automate or schedule tasks, unlike all that manual clicking in a GUI
Exactly. I always joke, even at work, that if I was a dictator, I would be a pretty eccentric one. Jailing political opponents? What a waste of time and energy. Repressing minorities? Couldn’t care less. Curtailing women’s rights? Nope. Centralising the economy and giving friends and family juicy government-backed contracts? Nah, that’s not me. But I WOULD make EVERYONE work from the command line lest they’re willing to die at the stake.
Using the terminal doesn’t make normal people feel superior, it is simply more efficient to type commands than click UIs.
Sometimes it’s easier to type
cd ~/D{tab}/M{tab}{enter} open .than using the GUI.Plus all the fancy stuff that people do with scripting
My work and personal computers typically have two applications open—a web browser and a terminal (well, really a shitload of terminals). I don’t have a desktop, I have a terminal. I don’t have a graphical file manager, I have a terminal. I’m not doing this because it’s cool, I do it because it’s efficient as all fuck and makes it trivial to fire off one-liners to automate shit.
Like, I stream a certain video game competitively, and I need to keep recordings if I want to submit runs. I started off recording my gameplay using x264, and the file sizes were too damn big. I tested various av1 options out using ffmpeg on a small sample clip, and when I was done it was simplicity itself to just do this:
# I'm typing this on my phone so I'm not going to write out the ffmpeg args for file in recordings/*.mp4; do ffmpeg "${some_args[@]}"; doneI didn’t have to learn some stupid GUI batch processing thing. I didn’t have to install any extra tools (since I already had ffmpeg). I just took my command, substituted the input and output files for variable names, and looped that shit.
I feel that the command line is the most efficient interface for a huge number of tasks. Discoverability is awful (although improved with good tab completion and just reading the fucking manual), but the efficiency and composability of a CLI built in the Unix tradition is hard to overstate imo.
For programming it’s essential.
Could you elaborate ?
I’ve always wanted to get into coding but what ive watched/read on something like godot or VBA was all clicking certain boxes in the gui and didnt interest me much. Are you saying like python and scripts ? That makes sense. I have no clue what programmers actually do since ive never been able to find something to apply it to
Clicking? I spend most of my time typing. Even in Labview there’s some typing to do. And godot requires a substantial amount of code to go with the gui side, it just has its own text editor.
But I mostly mod games these days, and I frequently need to understand the terminal api that’s being used to gather and use resources because the vscode gui fails to get things set up on its own a lot. I use the terminal directly less these days. But I still interact with it daily. Heck, I even use terminal args in steam game launching to improve performance occasionally.
I mostly use the terminal for automation though. And ffmpeg.
I wrote a program at work that gets deployed to hundreds of thousands of systems and is very hard to fully test or instrument. This program recently had a bug that was hard to track down. Using the command line, I connected to one of these boxes over ssh and ran a series of commands to detect the bug and dump details of what happened. Then, I took all those commands and turned them into a onliner that I could pass in over ssh, so I could get everything I needed for an individual maxhine. I then used
xargsto run that command in parallel over every single one of the systems my code was running on and in the end, I was left with a nice directory of files whose name was the IP of an affected system, each filled with useful information. I started by manually running command over ssh, but the composable nature of the shell allowed me to transition that into a script in a matter of minutes.I provided a more residential example of why I exclusively use the terminal for file management in a different top level comment.
It’s easier to automate.
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.
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.
Funny thing about Powershell is that it was controversial inside of MS when it was first created, and the inventor had to really push for it to make it into Windows. Everyone thought people wanted wizards for everything instead. There’s a great Corecursive episode about it. https://corecursive.com/building-powershell-with-jeffrey-snover/
Cmd was torturous and powershell not much better.
Some things are just massively tedious to do through any gui. Sometimes the converse is true.
One reason why LLM is desired as a ui element is that you can describe what you want in text without having to remember how to navigate a bunch of convoluted ui elements. CLI is related, except more precise but more demanding on specifics of input.
Powershell is actually really good a manipulating large amounts of data and outputting it how you want, the trouble is the commands are too lengthy and convoluted to remember, so I have to check web sources. While Linux commands are simple and short.
As much as I hate to say it, powershell is actually pretty good.
https://www.nushell.sh/ ?? sort of PowerShell without Microsoft?
I’ve heard of this before but never looked into it much.
It’s certainly capable, and has a more structured pipeline structure saving you in theory from awkwardness of grep/awk sorts of ‘processing’ that may be out of whack. It also has a command model where whether you are calling cmdlets or .Net functions, it’s lighter weight than a typical bash interaciton that has to fork/exec every little thing (and the ability to invoke .Net functions means a lot of capabilities that are normally not directly available to something like bash).
However, from a user experience, it’s got a few things that can be a problem:
- It’s a bit too ‘programmer-y’, and particularly maybe a bit too perl-y. Some of the same criticisms of how perl can be a bit of a mess carry over to powershell.
- It’s ecosystem is mostly just whatever Microsoft gives to you. The *nix side of the house has had a diverse ecosystem, but Microsoft is largely on their own. Good hooks into most Microsoft products, but not a whole not of third party enablement.
- Other shells have better and/or richer UX, like fish
In Linux, GUIs are almost always a front end with limited options for a CLI. Also, with CLI you can chain commands to get even more control.
It really depends on what you mean by “the real world”.
The most common use for Linux is on servers. For this scenario, not only does the terminal make sense, but it’s often required as there is no GUI installed.
For Linux on the desktop, the terminal is very much analogous to Windows PowerShell. More casual users can ignore it for most purposes, but may sometimes need it for troubleshooting.
If you are trying to say that you “know” Linux, say for career development, you absolutely need to know the terminal. Nearly all professional roles will require it.






