this post was submitted on 14 Jun 2023
19 points (91.3% liked)
Linux
48746 readers
827 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
I've been using Linux since ~1996; I used to wonder about this a lot.
The tl;dr answer is, it's too much effort only to solve the problem of making life easier for new users, and it can be a disservice to users in the long run.
As others have pointed out, there are limited GUI tools for common administration roles.
Power users are much, much faster at doing things via CLI. Most administrative tasks involve text file management and the UNIX userland is exceptional at processing text files.
A graphical tool would have to deal with evolving system software and APIs, meaning the GUI tool would be on constant outpatient care; this is counter to the UNIX philosophy which is to make software simple and well-defined such that it can be considered "done" and remain versatile and flexible enough to live for decades virtually unchanged.
It wouldn't be that much easier for things like network rules unless a truly incredible UI was designed, and that would be a risk since the way that's implemented at the system level is subject to change at any point. It's hard enough keeping CLI userland tools in sync with the kernel as it is.
It would need to be adaptable to the ways different distributions do things. Administration on CentOS is not always the same as it is on Debian.
And ultimately, the longer a user spends depending on GUI tools, the longer it will take them to learn and become proficient with the CLI, which will always be a far more useful skill to have. You'll never learn the innards of containers or VPS' if you only know how to do things from the GUI.
Well put. I do need to learn much of the basic workings of CLI. Any recommendations on how to approach learning?
I think my best advice would be to make a philosophy out of it. Learn how to solve every problem you come across with the CLI. Only use Google or ChatGPT when you hit a wall, and utilize the man pages to understand why the answer works.
Make a habit of automating common tasks using shell scripts. Over time you'll accumulate a library of cookbook code for doing common things that you can always refer to. Write comments in them to save time when you come back and refer to them. It also saves time to automate common things.
Long ago I followed the Linux From Scratch guide and it was very enlightening. It walks you through installing a working Linux system from scratch, starting from within another installation. So you could e.g. install Debian to a VM, add a second virtual hard disk, and follow the guide to iteratively install each bit of the system on the second hard disk until you can boot it and use it. This is an intense (or at least time-consuming) process but it's worth it.
Although it's terribly outdated now, I got a lot out of the book The Unix Programming Environment. It lays out the history of the system really well. In general, anything written by either of those two authors (Kernighan in particular) is just gold, they're both excellent teachers. It helped me intuitively understand concepts like pipes, "everything is a file", shell programming, awk, etc.
https://www.linuxcommand.org/tlcl.php
Another good resource IMO: Linux Journey