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.
Linux
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
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.
I wanted to see what all this talk about vim was and now I’ve been stuck for 3 years.
:wq
;)
➜ ~ ;) zsh: parse error near `)'
Reproducable actions that do exactly what you expect.
- It feels great
- Terminal programs run on a potato
- They are almost always way more powerful then their GUI counterparts
- They integrate with scripts and other tools for unlimited power and flexibility!
- You feel like a hacker man
- Your IT literate friends think you are cool
- You can really do things your own way
So yeah I love using the terminal for almost everything
Terminal is faster when you're used to it and sometimes offer more customization options to some apps that has both a GUI and TUI/CLI version.
I use the terminal (st with zsh and tmux) for:
- file management (advcpmv, fd, trash-cli, fzf ...)
- emails (neomutt)
- text editing/coding (neovim)
- project management (taskjuggler)
- image viewing/organization (ucolla,ge)
- online video browsing (ytfzf)
- calendar (khal)
- ssh
- vpn
- news aggregator (newsboat)
- web, bookmarks manager (buku)
- passwords manager (pass)
- dotfiles manager (stow)
- 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.
Because it just works. No bullshit. No bloat. Just fast and efficient.
Here's the ELI5 answer I'd give to your friend:
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.
Because I prefer using keyboard for almost everything and in most cases terminal is faster than GUI.
I'm just faster in the terminal than a gui
Really depends on the task and how critical it is. I would never use gparted on the terminal, 3 clicks and I'm done in the UI, without risks.
To get shit done in general.
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.
Just so you know, in emacs you can do mass rename of multiple files using dired-mode. Never use a for loop again.
many times it's faster to do stuff in terminal than in gui
it allows easy scripting. also for frequently used commands, i can just scroll up in the history, instead if clicking the same buttons over and over
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.
Yeah I use WSL a huge amount of my work.
Azure for instance is much easier to work with in the console than the website.
Then there's grep!
Because you can't (easily) program gui apps to automate tasks, but combining a few terminal programs to get more complex behaviour is really easy
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)
Not having to go through a bunch menus to do stuff, not using the mouse, having --help
for commands...
Or just for simplicity. For example, I use simple commands to manage my files: mv
, cp
, ls
, rm
, mkdir
, etc.
There's also Neovim, my preferred editor, which runs on the terminal.
I prefer to use GUI for visual things, like drawing, since that's what it's best at.
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.
Only one of the ~250 linux machines I maintain has a gui.
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 😅
I run stuff in the terminal because it's nicer than clicking. It's like a shortcut-only way of interacting with the computer when you get into it.
I make aliases and bash functions for everything I do often and is tedious to type / click like running steam games.
I just think it's neat!
Pipes are OP
I use a lot of programs and scripts that I wrote myself and most of the time I couldn't be bothered to make a GUI for them.
The terminal is the entire reason I use Linux. All the GUI stuff on Linux is average at best. The terminal is ⭐️ ⭐️ ⭐️ ⭐️ ⭐️
Because whatever I'm trying to do doesn't have a GUI option yet.
- Scripting is easier. Apps and commands can be composed together in simple repeatable scripts.
- looks cool.
- Remotely administer machines with the same interface and little lag.
It is quick. it does not need to load a bunch of things and in certain tasks, I can do multiple things at once.
I also find it easier to navigate and edit files with tab to complete.
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.
Mentioning you're using NixOS is slowly becoming the new "I use arch btw", isn't it?
If I figure out how to do something in the terminal, then I know I can automate it eventually.
If I figure out how to do something in a GUI I might be able to automate it.
CLI is conservative, GUI tends to change with each release. I have no time to search where is the menu item I need now or where is the menu itself.
If I don't know how to do something in gui: maybe click around or google it, it takes a while
If I don't know how to do something in cli: command --help
or man command
90% of the time I find what I need right away
It's easier than going through 10 menus (that are different depending on DE), because its universal on Linux systems
It's more efficient, and for years (actually like a decade) it was the primary way of interfacing with a computer.
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)
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 its better
Just faster. Often I can just enter a simple command before the GUI version even has time to load.
Because its easy to make a script that can chain together a bunch of commands for tasks i do frequently, so its only one manual step to do it.
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.