r/linux4noobs • u/CloudyyySXShadowH • 23d ago
shells and scripting If I use MOSTLY ONLY the terminal to use linux, would i get proficient faster and better?
I want to be a freelance linux server-expert/troublehsooter and while I'm good at linux i want to improve quickly and faster so I can get experience in linux and get a career of some sort faster.
I know I may have to use the GUI for linux sometimes (at least to start) but would transitioning to useing the terminal lik 90% times more be better? I'm using a vm to test things out and learn things so I don't damage my main OS (Pop_os!). Im learning the syntax for Debian, UBuntu, Arch and hopefullt RedHat soon.
Any thoughts?
•
•
u/TomDuhamel 22d ago
If you use the terminal, you will become proficient at using the terminal. I'm not sure what more you imagine you will gain here.
If you want to become proficient at managing servers, you'll have to install and manage servers. True, they are managed through the terminal, but using the terminal on its own won't teach you how to configure Apache or a network adaptor.
•
u/regexghost Debian 13 (Trixie) 23d ago edited 22d ago
Definetly. I moved to Linux about 2-3 years ago, and started using the terminal a lot almost immediately. Now I do basically everything in the terminal, and it's significantly faster than I ever was using GUI programs. Coding, todo lists, file management, note taking, image editing, most content consumption.
A few tips:
I have this in my inputrc (or I did when I used bash):
# Make autocomplete case insensitive
set completion-ignore-case
# Ctrl-Delete: delete next word
"\e[3;5~": kill-word
# Ctrl-Backspace
"\C-H": backward-kill-word
"\e[1~": beginning-of-line
"\e[4~": end-of-line
set colored-stats on
set colored-completion-prefix on
It enables some more coloured output, enables Ctrl-Backspace and Ctrl-Delete and most importantly allows case-insensitive completion, meaning if you type cd doc and hit tab, it will autocomplete to cd Documents/
Install a directory jumping tool. I use fasd. It allows you to do for example z projects to jump to ~/Documents/Projects, instead of needing to type cd ~/Documents/Projects
Adding export _FASD_NOCASE=1 to your ~/.bashrc will make it ignore case
Leaning how to use & disown or setsid to launch programs from the terminal:
vlc file.mp4 will block the terminal from taking any more input, and if you close the terminal, vlc will close too.
Doing vlc file.mp4 & disown or setsid vlc file.mp4 will allow you to keep using the terminal, and also won't close vlc when you exit the terminal
For server stuff, trying following some of the guides on landchad.net to set up a website, git server etc, it's a good intro I think.
•
u/SleepyGuyy 22d ago
there are tools in the terminal that are not available anywhere else, and such tools can be combined using piping | and... whatever the inserting into a file is called >> , to make them even more useful.
It's safe to say for a server / sys-admin, the terminal can do everything the GUI can, and so much more. If you know the commands, you will never need to leave the terminal.
I have been using Linux for years but I admit I am not very familiar with all the commands and abilities. I can't ever remember the specifics of how to search for files using find or grep, but I know theyre incredibly powerful.
Then there's Bash scripting, which I have never really done. But Bash scripts can automate any terminal task, which is very powerful if you do most things in the terminal.
Recently I discovered Lua and how it can be used as a scripting language that executes commands. I might try to get into that. Probably not a tool a server admin would use but I dunno maybe. I find it nicer than trying to learn Bash.
•
•
u/Arinussyy 22d ago
Well if you mean in terms of doing some everyday stuff in the terminal when you can just to gain familiarity, it could help. But the main things that are goldmines for boosting your confidence and skill in server management etc would be learning to troubleshoot issues in the CLI and gaining familiarity with CLI tools used in this area.
•
u/Bug_Next fedora on t14 goes brr 22d ago edited 22d ago
Depends, if you are gonna use the terminal to run a TUI version of Discord and Spotify that will be irrelevant, that's not what you are gonna do when managing servers..
Get an old computer, install Debian or Fedora server or Ubuntu server or whatever and pretend it's the real thing, idk what you wanna get in to, "linux server expert" could mean lots of things. Also lot's of stuff in "real" servers is done via graphical interfaces anyways, but said graphical interface is not running in the server, it just connects to it.
Also, if you just care about servers don't waste your time with fancy shells or plugins... 99.999% chance whatever you connect to will just be running Bash, if you get too used to Fish or Zsh you'll have a bad time.
Arch is completely irrelevant for servers, the go-tos are Debian, Ubuntu server, RHEL, Rocky, Fedora server, SUSE... Also probably learn how to work with containers, lots of companies are moving /already moved everything to immutable / image based distros.
Learn Bash, learn the core utils, probably learn how to use termux, learn to use *some* terminal text editor and *some* security module (selinux for rhel/fedora, apparmor for debian/ubuntu), and most importatly, learn systemd (AT LEAST timers and services), every major distro uses that init system. That's about it, those are the only 'universal' things there are, then it depends on what you wanna do, if you don't care about managing networking you probably won't care about learning iptables, if you don't care about running a db you probably shouldn't waste your time learning the gazillion configs for postgres, etc.
This post is kinda like asking "will i get better at jazz if i play the guitar more?" well idk, will you practice playing jazz? if you play punk rock you'll never get better at jazz, the guitar is just the tool that's *usually* used for it, as is the terminal.
•
u/Alice_Alisceon Do as I say, not as I do 22d ago
The only way to become a ”server-expert/troubleshooter” is to work with, and troubleshoot, servers. And if those servers are set up with industry best practices for their use case, you’ll barely ever see a gui on them at all. Some general terminal knowledge will be useful, sure, but you’re not gonna be stuck on the difference between ctrl-c and ctrl-shift-c for long. What you need to prioritize learning is how servers work, what they do, how to operate them, and what to do when they break down. You’re not gonna learn any of that by just running system updates on your pop_os setup via the terminal instead of a gui. If you don’t have access to hardware to use as a home lab, learn to set up virtual machines and manage them as if they were discrete units; use ssh, learn proper key management, and so on and so on.
•
u/CloudyyySXShadowH 22d ago
What do you mean by discrete unit?
And thanks for this reply, I'm going to do what you say.
Are homelabs hard to set up? How can I use a virtual machine as a home lab of there is something similar I can do?
If I set up my own server (or more than one) will that Be a good benefit for me?
•
u/Alice_Alisceon Do as I say, not as I do 22d ago
It’s very easy to set up a VM and just use it like an extension of your current machine. Ie interacting with it through the display driver and using host extensions etc etc. Use that as little as possible since in a real world deployment you might not have access to fancy things like ”monitors” and ”keyboards” and what have you. Bonus points if you learn ways to run the vm completely headlessly from first boot through its entire lifespan. It’s a bit trickier though, so keep that in mind.
Hard? Idk maybe? Not for me, but I’ve been running various home labs for ages now. Sourcing the hardware is the harder part, especially in this market. But if you have old junk lying around or can get some ancient machines for cheap, that’s your start. Ideally you’ll have multiple machines so you can learn some networking as well.
Same goes for if you go the vm route. It really is no substitute for real hardware, but it can be a stopgap. Set up multiple, try to make sense of how they should talk to eachother, run something that you may even have an actual practical use for, like a pihole or some such.
And not only will this be a ”good benefit”, as far as I am concerned this is the only way to reach your earlier stated goal. You’re not going to learn server management without managing a server. You learn most from your failures, if you let them, so fail lots on your own projects so that you can succeed when it counts for real down the line.
As a final note: really REALLY invest time and energy into doing your own research and reading the manual. Asking questions online will not get you far, you need to bridge that knowledge gap with your own skill AND initiative. You can’t expect to be pointed in the right direction every time you need any direction at all
•
u/CloudyyySXShadowH 22d ago
Thanj you for all this advice!!!
Btw I am learning tailscale as well
•
u/Alice_Alisceon Do as I say, not as I do 22d ago
If you want to work on actually understanding how this stuff works, you should probably learn WireGuard instead 😉. Down the line you’ll regret every shortcut you ever took.
I’m actually experiencing this right now personally as some shortcuts I took in learning years and years ago have just now caught up to me. Don’t skip layer 1 day people! No amount of TCP can protect you from magnetic interference forever!
•
u/zbouboutchi 22d ago
Most linux servers dont have GUI... If you want to be able to do anything with these, you can't avoid to learn CLI.
•
•
u/Foxler2010 21d ago
You will probably get what you want by learning the terminal, but I have to ask, what do you think it is that you will learn?
You say you way to be a freelance Linux server expert; that's a very broad title and involves a lot of skills. Not saying you can't do it, or that becoming proficient at using the terminal won't help, but simply that identifying specific skills you want to learn and areas to grow in is going to help you a lot.
First off, go and actually try to run a headless server, and don't have it be tied to your desktop computer in any way. Set up a LAMP stack, and run WordPress on it. Set up a Pi-Hole and use it as your LAN's DNS and DHCP server. If you have some hard drives, try setting up a home media server and download some movies.
Doing projects like these is going to reveal all the things you need to learn. Slowly, if you keep at it, you'll understand all the concepts eventually. Do note, there is a divide between being a power user and a sysadmin. Power users may be at home on the terminal and can work quickly on their desktop, but that doesn't bring any knowledge about servers or network infrastructure. Sysadmins can manage infrastructure but there's certainly many that are still daily driving a Windows desktop. It's important to recognize the difference, and which skills you want to prioritize. Good luck.
•
u/tomscharbach 23d ago
If you want to learn to become a "server-expert/troubleshooter" focus on server architecture/management, using logs and diagnostic tools to identify and resolve system, application, and network issues. You will pick up command line expertise as you develop your skills.