Hi, everybody
Recently, a guy noticed that I was using it and asked why?
For me it because in Linux many things are done through the terminal because Linux has many different desktop environments
He also compared terminal commands with cheat codes in GTA and other games, he understands what benefits you take from them, but not from terminal commands
Command line is a lot more powerful for a lot of cases. Most CLI programs are written with the idea that the caller might be another program, so they tend to be easy to chain with pipes and redirection. So you have tons of simple tools that you can combine however you need.
For tasks that I know, I'm faster in the terminal. For tasks where I'm less familiar or that are very important (like disk partitioning) I prefer a GUI because with a GUI I can usually see a bit better what I'm doing.
Terminal tasks for me include copying stuff, setting folder permissions, uncompressing or compressing folders, quick edits in vim, etc.
not in the terminal but I also have a lot of scripts used in rofi to control my audio input/outputs, launch a web search, access my bookmarks, autocomplete username and password fields
I'm sure I'm missing some obvious tools I use daily. It's hard remember everything when it becomes so natural.
I have shared my experience with some of these tools here.
Computers are like servants. They do whatever you ask of them. But to be able to ask them things, you must do so in their language. On the extreme low level that means writing code to make programs, but on a higher level, it means talking to programs someone else already wrote using special commands.
The buttons and switches on a GUI that you can click on with a mouse are like pre-recorded commands that instruct the computer to do some specific thing. The button or whatever will have a symbol or text description that lets you intuitively know what it's for, and when you click on it, it plays a pre-recorded command to the computer in its language that tells it to do that thing. With these buttons, you can ask things of the computer in its language without having to know that language.
As you get more intimate with the computer, this system can start to feel a bit stiff. You've essentially got a butler who doesn't speak your language, and any time you need to give him a task, you have to fumble through a basket of pre-recorded tape recorder messages to find the one for the task at hand, and play it to him. For more complex tasks, you may need to chain several of these together. It gets slow and awkward. And god forbid you don't even have a tape recording for the thing you need.
It's easier if you learn the butler's language yourself. Then you can ask him for things directly. You're not bound to any collection of pre-recorded messages to use, you can tell him exactly what you need. And if you don't happen to know the word for something, you can look it up. It cuts out all the faffery with fumbling over a tape recorder looking for the messages you need to play.
Using a terminal is roughly the computer equivalent of speaking to your butler in his native language. You're not limited to only the buttons and features any particular program lets you have; you can make up exactly what you need on the spot. And you never have to bounce your hand between a mouse and keyboard to do it, you can keep your hands in one position at all times, which really adds up over time in both speed and comfort.
Practicing this will also give you the side perk of better understanding how the computer actually works overall, and what it's actually doing. This knowledge can come in super handy when diagnosing problems with the thing. When a GUI gives up, a terminal can keep digging.
Because every IDE implementa a different git interface and I can't be bothered to figure out where they hid the commit, push, pull etc. buttons this time.
If I need to rename a file, yeah, I can do that by right-clicking it in the file explorer, and selecting 'rename' from the menu. Two files? Painful but doable. Three files? Oh hell no, I'm switching to my always-open-in-background terminal window, and write a quick c=1; for f in *.jpeg; do mv "$f" $c.jpeg; c=`expr $c \+ 1` ; done and it takes twice less time than clicking things through with mouse.
And yes, I wrote that shell command off the top of my head on the first try and without edits.
For me the difference between a cli and a gui is like asking someone to do something speaking in a language they can understand and doing it just by pointing at things and doing gestures. It's enough for ordering at a restaurant, but for more complex tasks it gets ridiculous, even at a restaurant you'll get better results if you can ask for some information and understand what the server says
I am on Windows as my workstation, but my servers run Linux, why should I install X/Wayland and VNC to manage my servers when even the later versions of Windows comes with an ssh client?
When I run linux with a gui, I mainly use the terminal as I sm more used to that rather than relearning a GUI.
Because Gui's don't show advanced options and so I know/understand exactly what is being done. (e.g. I would always use apt over mint's package store so I could see what it did, how much time I had left, download multiple applications at once and see if the package made a random config file somewhere)
I really despise the use of the mouse, in some way it just feels somewhat wrong, especially the need to constantly move one hand between the mouse and the keyboard. Also I'm way faster at typing that I am pointing and clicking around looking for the right button to press. Terminal commands offer a simple and expressive way to interact with the computer.
I like using the terminal because of 3 main reasons:
I like using my keyboard
I like doing multiple things in one window
Verbosity
I'm pretty quick with typing, but sometimes I can't see !y mouse at first, so it's just faster for me to type out what I want to do as long as I know the right arguments for it.
My average workflow at work as me doing frequent saml logins and going between multiple kinds of databases. It's just easier for me to run the saml cli command and then run the SQL CLI command I need instead of messing with datagrip settings and stuff. Also I recreationally run some servers and it's just easier to ssh into the server, make the changes I need in something like nano or the redis CLI tools and then log back out. This means I'm just plain more comfortable on the terminal in certain situations like config editing, writing posts for my gemini capsule, etc.
Sometimes when I run a GUI program I'll get big loud silence and don't know what to do. In that case I genuinely enjoy using the terminal and running an equivalent command with verbosity settings so I can see what it's doing or not and can track down any errors.
On top of those reasons, I've been playing with RISC-V architecture lately and, while the xorg riscv64 port is admirable, I just get better performance rn by running my RISC stuff through tty.
I recognize that not everybody is going to have the same use case and workflows as me, but I'm pretty comfortable with what I've got 😅
Because GUIs on linux don't do everything that the CLI can. I use my computer for more than just browsing and editing documents, so the GUIs that do just that, don't cut it.
Also, I'm on NixOS. There's simply no way around the terminal - sadly.
I use a terminal whenever I'm doing work that I want to automate, is the only way to do something such as certain parameters being cli only, or when using a GUI would require additional software I don't otherwise want.
I play games and generally do rec time in a GUI, but I do all my git and docker work from the cli.
The terminal is like a direct access to do things on the computer. A GUI is a program someone made to do a task the way he envisioned it to be done. If this task is not exactly what you need, you're out of luck.
For me it's because it's much quicker and reliable for most use cases. Also the commands are roughly the same across many many of my systems (AIX, macos, and Linux distros)
Nowadays I prefer GUI for everything, but often enough there is no good GUI or GUI suck. Also scripts. Terminal is very powerful tool to get things done quicker.
My server doesn’t have a GUI, so the terminal is what’s there. As for my desktop, terminal is just easier for some things. And for my own stuff, it’s easier and faster than building a GUI for all the things I’m doing.
Because I'm forced to use a Mac at work. So to avoid their terrible UI, I use the terminal for most of the things. Then switching back to Linux is relatively easy.
Also it is faster in most cases and it's keyboard-first.
I do a bit of programming. Git help is about terminal commands. There are graphical front ends but I have to learn how to use them.
I use terminal also for package management for the same reasons.
Makes me feel like a hacker and makes other ppl think that I'm smarter than I am... That and there are certain things that are just more convenient through the terminal
a terminal is the ultimate gui for a lot of things especially w/ ncurses mouse support. You can open N terms and easily compose a dashboard which is exactly tailored to what you're doing at the moment. A simple oneliner often solves a problem for which a gui simply does not exist / isn't powerful enough.
Terminal is the ultimate gui ftw from the space yay!
Why should i open discover, wait half a year for it to load, search for vlc, wait half a year, look if its not a flatpak, realise its a flatpak, repeat
If i could just type sudo pacman -S vlc?
Or search how to update my grub config if I could just type grub-mkconfig -o /mnt/Boot/grub/grub.cfg?
Because I can do things in 30 seconds what two windows admins take 15 minutes to do with their point and clicking. Not even making this up, this happened.
Some applications take some time to load up visual elements that you don't need before you can start using it. When you got a lot of work to do sometimes that just slows you down.
A lot of CLI programs do one thing and do it well while also working excellently in custom scripts.
One could ask in return "why do you use a mouse".
The answer is probably "I've always done it this way" and not "after trying out different methods it's the one that i prefer".
You can use the terminal commands to automate tasks, build cicd etc. Navigating file tree and performing tasks is much quicker once you get the hang of it. Lastly it translates well on all distros and even on Mac, or windows with wsl or cygwin
Even back in the day when I still used Windows (and GUI almost exclusively) I browsed my filesystems like I'd use a terminal with tab-completion. I'd press the first few letters of the file/directory I was looking for and press enter, rinse and repeat. I knew my file organization by heart anyway. It's only natural for me to drop the GUIs for such use cases.
Everyone’s different idk. I myself love command line. I have enjoyed Linux for a long time but it didn’t really become my daily driver until recently. I find it very rare that I use the GUI for more than gaming and watching stuff. Everything else is command line. I’ve had friends refuse to try Linux due to the “requirement” of needing to do stuff in command line. When I showed them some newer distros that appeal to users who don’t really feel comfortable with command lines.
I can use Fish’s history to jog my brain on actions I don’t quite remember. Remembering a sequence of screen menus to click thru is often much more tedious & error-prone. And when you have a commonly repeated process, it’s trivial to script because shell scripts are, well, scripts for that terminal shell.
Also the terminals applications are hella portable. I can use ssh/mosh over the network & have a similar or exact environment as my main PC on a remote box. vi was always a good enough editor.
I think about it like a tree structure for both. With a gui you have to move your mouse around to various places, with a cli each character branches off into another tree. Mathematically you can handle more options faster with a CLI.
Nice choice. Try to stick to the standard repository, kinda like the Play store on android.
I believe Mint tries to have minimal dependence on the command line. But usually it's easier to help others solve problems with the command line since that is easier to write out than how to click through menus. So don't let it scare you too much.
The internet is a friendlier place now, at least in the linux help-o-sphere. People don't let others post destructive "lessons" for people to learn anymore.
That was comment I wrote in a thread about distro recommendations. I think it provides a context in which CL has a clear advantage over GUI.
I use the terminal in a variety of circumstances (like working on Node.js and other programming projects) where there is either no good GUI alternative or using a CLI is actually faster. I've been using computers since 1989 and my first operating system was MS-DOS, so the thought of using a CLI when necessary doesn't bother me.
Why not? It's simple, lightweight, has a lot of interesting commands that fills its respective niche really well (btop, for instance) and (the best of all) it doesn't explode my PC everytime I run such commands.
It's very fast and nearly always gives me the results I want without extra bullshit. For example using bc or qalc to do a quick unit conversion vs launching a calculator app for the same purpose.
For simple tasks you don't need CLI. Most GUIs implement basic workflows and do a reasonable job at it (obviously not counting the ridiculous amount of time Windows needs to "compute space requirements" while deleting an empty directory. Seems it's more important to get that little popup on screen and run the animation a few times than actually doing the job).
It's when you get past the basics that CLI comes into its own. Those grindy things you do in Windows clicking one thing at a time? Glue a couple of commands together in the CLI and it's done in a tiny fraction of the time.
For me, two main aspects: I do not have to move my hands from the keyboard and I can pipe things from one tool into others, significantly speeding up many tasks
I don't actually use it that much to input commands, but many scripts I made pop one up to show details of what's happening, e.g. how opening the VPN connection is going, what crypto module it's currently loading or how many more iterations a macro will do.
Because app manager doesn't work well. And there are the feedback on terminal that tell you about missing dependencies or broken packages...The fact you get those verbose log help for doing web research and solve lot problems. On GUI installing app isn't well done : it's slow, they don't tell you what they are doing nor why it fail.
The only limitation of terminal is when you want to work with file system. I need to see the tree and typing ls -a everytime isn't efficient. Example, i'm doing a git clone on a server throught ssh. But i have no way to know its structure and check if i downloaded it in the correct directory. I need a visual that tell me this folder is here, has those writing permission, is a tar archive... So i use both : filezilla and terminal, gui and cli. In fact, they are both very useful, so there no point comparing gui and cli, they both serve well their purpose.
I'm using CLI and GUI. For example, if i want to chose the correct keyboard and check its mapping : gui. If i want to add sources and its gpg key : app manager gui. There is no way i would enjoy typing this huge command line with flags from my mind, and i do lot mistype. Or installing the stack lamp ? on windows it was amazing and faster than linux. next, next, done.
Because there is no native gui. For most things to configure in Linux there is a webui but not a simple Gui built in.
Configuration files like squid.conf smb.conf nginx.com... then we have logs but here I think I never checked for a Gui, does it work for remote ssh easily? Can you restart service easy?
If you know how to use git, you will know how to use docker (provided you know what you want to do). They are completely different programs, yet you can quickly grasp the other instinctively.
Now, Photoshop and Blender - they are also different programs, but if you know Photoshop, you still need to relearn Blender's interface completely.
This is why I prefer terminal programs in general. Unless it's more convenient to use GUi, i.e. Drag&Drop file manager, some git tools etc.