this post was submitted on 20 Jul 2023
1112 points (97.3% liked)
Linux
48738 readers
2601 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
That is a legitimate question. I still don't fully understand people's obsession about terminal. It's 2023, we should be able to do everything comfortably using GUI rather than type everything, remembering all the commands, parameters, paths, permissions etc.
As a terminal fan, my main reasons for preferring them over a gui (for some tasks) are:
$()
The barrier for entry is higher with terminals but unless you need visual feedback (e.g. because you're editing an image) it's easier and faster for both common and rare tasks.
And even for some types of image editing, terminal is way faster and easier. Some of the things i've done that are a simple command with imagemagick i wouldn't even know which gui app to install, let alone how to do it
To add to point 4; in most Unix terminals you can use Ctrl+R (mnemonic “reverse”) to search commands from your history, press Ctrl+R repeatedly after typing to keep going back up, start using the arrow keys to leave the search or hit [Enter] to run the result
Well some if those are only true for smie people. Add in a vad case of dyslexia and it get real hard to kniw if what you just tyoed is correct, and does any cli have a spell checker.
There's this aptly-named utility that I'm currently using:
https://github.com/nvbn/thefuck
I do think GUI is the way to go for "typical" usage, but if you wanted to set up a faster way to run a command you use often, you would create an alias to handle a complex command or something you do often.
For example, I have 'updateall' as my command to run 'sudo apt update && sudo apt upgrade && flatpak update'. Why not GUI for this? I like to see what's going on during my updates. It's also kind of satisfying for some reason.
Anyway, I suspect your problem then would end up being not running a syntax, assuming it even exists, but the correct syntax, which I often encounter, but that's what 'history | grep' is for.
Fair enough, I'm not against people making guis as well for people who prefer them for whatever reason, my point is that people don't just prefer terminals because of elitism or something. I imagine terminals can be better than guis for some disabilities as well.
yeah. you can change font size / change font on a terminal much easier than many GUI applications. and terminal is going to have that same standard apply to everything
from what i understand, there are fonts for people with dyslexia
Open dyslexic, and ironically comicsans
I'm sure there are ways to make it more convenient to use a terminal with dyslexia but I'm gonna guess that it's always going to be a bit of an uphill battle. It might make more sense to use a gui in that case for many applications. Conversly, it's also good to make sure you have a proper terminal interface as well for disability reasons, but also for the convenience that a terminal interface can provide for people who are familiar with the terminal.
Because it just works (tm). And it is flexible to a point that no GUI can ever accomplish. It's liberating. It's repeatable, It's automatable. It's about control. And most importantly, it's FAST!
If you try to max out the control, GUI comes out of as an UX disaster. Check any enterprise software GUI to see what I mean. There will be lot's and lot's of buttons all around, and you would also end up with some kind of text input or programming environment inside it.
Consider this but triple the complexity and everything https://wiki.wxwidgets.org/images/1/1f/BinPjOptions.PNG
I agree in certain circumstances. For example a file manager I don't understand why people use in a terminal. When I need to do like batch deletions or something I can easily just write a couple terminal commands. Everything else I just use the default file manager. Either Finder on MacOS or the Gnome one on Linux.
But stuff like vim, a terminal text editor, is simply more fluid and enjoyable than a GUI program. I've tried using vim plugins for various different GUI text editors like Sublime or VS Code but there's nothing like a personalized vim install. It takes a little bit to get used to the commands, but once you do it's like riding a bike. You just feel faster and muscle memory takes care of the rest. You don't actively think about it
same thing with for example package managers. it's faster to just press my hotkey to open up terminal, type in "sudo dnf install <whatever>" and it's installed. why do we need a GUI here? it doesn't make anything faster. In fact, it just gets in the way.
so some things GUIs don't actually improve. Some they do. It's a per case thing I think
A gui helps when you don't know the package's name
It's way easier to communicate a terminal based solution over the internet. Instead of making a guide with images, possibly needing annotation, you can just say "run x, y, z in order" and the user can just copy and paste it (even though it's a bad habit to run random commands off the internet)
I mean you could certainly have both but Linux treating its terminal as a first class interface is a big killer feature of Unix/Linux I think and why it's still used in the server/dev world so much. Having a command line interface that's not an afterthought, fully scriptable, and can be automated is very convenient for large tasks that need to be chained together whereas on Windows you have things like PowerShell where not every program you want to do things with in PowerShell has a way to interact with PowerShell, since in Windows you have the opposite problem of GUI being the only first class interface. I think I'd be worried that if you de-emphasized the terminal more you'd get the weird situation that happened to Windows and PowerShell whereas it's usually not super hard to build your own GUI around an open source terminal program. A lot of people aren't especially motivated to do that so some programs don't have GUIs, but if you're feeling like more programs need one then go for it.
You still need similar memorisation when using a GUI.
You don't give the GUI process a second thought as you're used to the steps, similar to those using the terminal.
For example, in Windows to create a new text file, save it, and copy it.
You need to know the name of the application (notepad), how to find and open it from the Start menu, the steps within notepad to save the file and the path to save to (file -> save -> navigate to path), the name of the file explorer (Windows Explorer) and how to find and open it, how to navigate to the file, the steps to copying a file (right click copy or ctrl-c), and pasting the file (right click paste or ctrl-v).
On the terminal, it's a case of remembering commands/switches:
vim document.txt
:wq (write quit)
cp document.txt documentnew.txt
rm document.txt
Both processes require memorisation of specific sequence of steps which overtime you'll become accustom to and not have to actively think about when repeating a similar process.
My preference is the terminal as it is quicker and simpler in most instances and without the clutter of everything that comes with a GUI application.
In a GUI, your options are human-readable and all presented to you. In a terminal, you have to know the names of the programs/commands. It's not a big deal for something like Notepad or vim, but it gets more complicated when you don't know the name of what you're looking for. It's easier to remember the which program you need when you have a list and icons. You can do all the same things, but a GUI is much more intuitive for the majority of people.
Congratulations, you now opened Notepad / Random open source text editor.
The above pattern works for almost every program. There is no need to memorise the ridiculously inconsistent nuances of the 4 different commands you specified.
9/10 times I personally prefer GUI over terminal for efficiency. With three buttons I already have a text editor open. At this point, you've just started typing the letter 'v' in your first step.
You're misunderstanding the point of my comment.
It wasn't competition of how quick it is to complete that specific task in the terminal vs GUI.
That way suites you as you've learned it, you're used to it, and is part of your workflow. It's efficient for you, that's great. The terminal suites me as I live and breath it, in and outside of work.
There may be things I do on the command line that would be quicker using a GUI, yet I do it anyway as it is simpler.
Because you have much more control
There should be a good GUI for everything but a terminal offers more options to do certain things a lot faster. Especially in work environments. And once you're used to this level of efficiency and control you're not likely to stop doing that in your home network.
I just find certain things to be quicker in the terminal than doing it through a GUI.
Like installing software. I think it’s quicker and more direct to do something like sudo pacman -S Firefox than to go through a gui. Especially if Im using a drop down terminal that I have hot keyed.
As for remembering everything, I’d say it’s just a matter of experience. Like, you had to learn how to use a GUI app at one point or another.
one of the most important things about text based interfaces is reproducability. Being able to run commands and get the expected results every time and easily share it with others. GUIs can be customized and re-arranged, and its much harder to automate things with a GUI program vs a text based one. Those are handy features which will probably prevent the terminal from ever dying.
Terminal fan here (though I’m on Mac). GUIs, in an attempt to contain all the features of a CLI program while being user friendly, make compromises on simplicity. It’s difficult to remember the combination of buttons to click to get what you want. For CLI programs, you have man and —help to figure it out. Of course there’s the pipes and automation aspects of it too.
I work a lot with building engineering programs with GUIs, and while you can get a lot of functionality in a GUI, there's always some things that just aren't worth the time to accomodate or even be a common enough issue to even think of
This is what sucks about Linux. It’s still not as complete as Windows in that regard… Things being too techy, even the real user friendly ones still got it.
You got this the wrong way around. Windows is lacking a proper terminal. You are at the mercy of constantly redesigned GUIs for literally everything. Windows is an absolute pain to use if you aren't used to it and have developed a certain amount of Stockholm syndrome.
Same way other way around.