this post was submitted on 23 Aug 2024
107 points (98.2% liked)

Linux

48003 readers
1025 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

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
107
submitted 2 months ago* (last edited 2 months ago) by klep@lemmy.ml to c/linux@lemmy.ml
 

Hey everyone, I'm relatively new to linux and was looking for some advice/direction. I have been using Mint Debian Edition for around 6mo or so, and want to learn to use the command line efficiently and proficiently.

I have set up EndeavourOS on a backup laptop I have and have been playing with it, reading the Arch Wiki and such, but I feel like I'm not necessarily learning why I'm doing things, just doing what has worked for others.

So here I am. I guess I'm looking for recommendations for books or articles (physical or online) that can help me to learn and understand the workings on linux, and especially the command line.

Thank you all so much.

top 50 comments
sorted by: hot top controversial new old
[–] Kongar@lemmy.dbzer0.com 27 points 2 months ago

I’ve seen this one recommended in the past. I think it’s great for beginners yet still full of useful information.

https://linuxjourney.com/

[–] Black616Angel@discuss.tchncs.de 19 points 2 months ago (1 children)

Linux is a tool. And I find that the best way to learn handling a new tool is making a project with it.

A book is (maybe) fine, but a project will help you use your knoweldge while you gain it.

So set up a Lemmy/Minetest/Matrix/Teamspeak server or write a bash script to change your audio output device/volume or program a simple bot in your favorite programming language or mix some music or gather a bunch of PDFs and search through them and concatenate them

And while you do that and create directories, change permissions, move files, create users or "cat" or "grep" or "sed" stuff, find out, what every single line you write in a terminal does. And instead of using a graphical program to move files, shutdown your PC or update all programs, only use the command line.

This will help you in the long run.

[–] bastion@feddit.nl 1 points 2 months ago

Or, compile gentoo from scratch as a hobby?

[–] bionicjoey@lemmy.ca 6 points 2 months ago
[–] variants@possumpat.io 6 points 2 months ago

I think you need like a project that will give you a goal and things to look up to do specific things. What got me into Linux was running a minecraft realm, then we hit limitations on the service so opted for a server instead which lead down the road to a VPS and had me using Linux and commands

[–] NegativeLookBehind@lemmy.world 5 points 2 months ago* (last edited 2 months ago) (1 children)

There’s a book called “How Linux works” and I think you might find a lot of good info there.

And at a glance, this Bash tutorial looks pretty good: bash scripting course

[–] CameronDev@programming.dev 2 points 2 months ago (1 children)

Psst, you link has gone missing

[–] NegativeLookBehind@lemmy.world 3 points 2 months ago (1 children)
[–] CameronDev@programming.dev 2 points 2 months ago* (last edited 2 months ago) (1 children)

Very weird. Maybe its the client. Can't see it in the browser either

Ah, I see whats happened, you didnt put anything in the square brackets:

[](https://www.freecodecamp.org/news/shell-scripting-crash-course-how-to-write-bash-scripts-in-linux/)

should be:

[Cool Tutorial](https://www.freecodecamp.org/news/shell-scripting-crash-course-how-to-write-bash-scripts-in-linux/)

resulting in:

Cool Tutorial

[–] NegativeLookBehind@lemmy.world 3 points 2 months ago

Yup, you’re right. Seems like Voyager handles that correctly, since I can see it. I can add a title to fix it for others though. Thanks for checking it out!

[–] radswid@feddit.org 5 points 2 months ago

Nice to hear that you have found your way to Linux. What helped me a lot to understand Linux and the command line better was trying to install Arch, following the instructions in the wiki, failing at the first attempt and trying again and finding the error.

[–] UNY0N@lemmy.world 5 points 2 months ago (1 children)

In addition to rhe other advice, I'd add what helped me the most: install arch from scratch.

Use an older PC you have lying around, or just a VM. Use the installation guide on the arch wiki (or a video on feetube if you prefer to listen to a human explain stuff) and just learn as you go.

[–] bastion@feddit.nl 1 points 2 months ago* (last edited 2 months ago)

Did this with gentoo a while back. Would recommend.

[–] Presi300@lemmy.world 4 points 2 months ago (1 children)

The best advice... Just use Linux more... It's the only way to get familiar with it

Yeah that’s the biggest cure for “learning something and not knowing why”. Instead of just reading to read, try doing things, and when you have a problem or question look it up.

Want to install multiple programs at once? Google it. Want to search for a program, but it spits out 700 versions? Google how to filter outputs in the command line.

Unless you just really like reading dry ass documentation then you kinda just have to do it. And when you run into an issue then figure out the fix.

[–] rand_alpha19@moist.catsweat.com 3 points 2 months ago (1 children)

I think, as a Linux beginner also (~10 months), the best way to learn the terminal is to figure out what tools are useful to you and then read the manual pages or [application name] --help (if the application supports that command). Learning how to use grep will also be really helpful for troubleshooting, since sifting through logs is such a pain.

Like if you want to download a YouTube video, install yt-dlp and then type man yt-dlp into your terminal to learn about how that tool works. You can do this for basic utilities too, like cp, dd, mv, etc. and other applications you have installed. You can also use yt-dlp --help but that won't open in the parser, just the terminal. Learn by doing things that are relevant to you and branch out from there.

There are also applications that will let you read the manual pages outside of a terminal, like xman, if you find that useful. After a certain point, you'll be able to write commands with switches/arguments without needing to check what they mean first.

[–] Malgas@beehaw.org 2 points 2 months ago

apropos is also helpful if you want to do something but don't know what the relevant tools are.

[–] str82L@lemmy.world 3 points 2 months ago
[–] vk6flab@lemmy.radio 3 points 2 months ago* (last edited 2 months ago) (15 children)

My first recommendation is to become familiar with one flavour of Linux. Debian is a solid choice and it will give you a good understanding of how a great many derivatives operate.

The command line is a tool to get things done, it's not an end to itself. Some things are easier to do with a GUI, many things are easier to do with the command line interface or CLI.

Many Linux tools are tiny things that take an input, process it and produce an output. You can string these commands together to achieve things that are complex with a GUI.

Manipulation of text is a big part of this. Converting things, extracting or filtering data, counting words

For example, how many times do you use the words "just" and "simply" in the articles you write?

grep -oiwE "just|simple" *.txt | sort | uniq -c

That checks all the text files in a directory for the occurrence of either word and shows you how many occurred and what capitalisation they used.

In other words, learning to use the CLI is about solving problems, one by one, until you don't have to look things up before you understand why or how it works.

load more comments (15 replies)
[–] some_guy@lemmy.sdf.org 3 points 2 months ago

There’s someone posting a pretty well-crafted intro to Linux series here on Lemmy. Look for that and go to the linked website and dive into the parts that you find interesting. I think they post a course chapter per day in the format of (approximately) “Day 15: Topic for that day.”

I’ve skimmed some of the course material and thought it useful for beginners. I’m really happy that they keep posting each month.

[–] EuroNutellaMan@lemmy.world 3 points 2 months ago* (last edited 2 months ago)

best way: try to use it for daily tasks. Copying and moving files? terminal, moving around? terminal, editing text? vim. Etc etc. Eventually you will learn to use it.

Also check out RobetrsElderSoftware's "[command] is my favorite Linux command" shorts to find out new commands. Also install tldr (sudo apt install tldr on mint, sudo pacman -S tldr on Arch & derivatives) it's very helpful when you want more (and better formatted) info than [command] --help but less than man [command]

[–] pelya@lemmy.world 3 points 2 months ago
  • Ctrl-C will not do what you expect, use Ctrl-Shift-C, or click mouse wheel
  • There are many better terminal emulators that XTerm
  • If you accidentally press Ctrl-Alt-F1, you can press Alt-F7 to switch back to the graphical desktop
  • There are in fact many ways to exit vi, no need to reboot your PC
  • There's no need to suffer through The True Commandline Experience For Real Fedora-Wearing Sysadmins⁽¹⁾, just install mc and get all the benefits without typing cd and ls every time you want to find a specific file

⁽¹⁾ Real Fedora-Wearing Sysadmins don't use vi to edit files, they either write a sed script or use cat to copy the file to the terminal, then use cat again to copy the contents of the terminal back into the file by clicking the mouse wheel while typing manually the lines they need to change.

[–] Guenther_Amanita@slrpnk.net 2 points 2 months ago* (last edited 2 months ago)

I never had an IT background and also "just tried" Linux a few years ago.
Now, I'm still not an Linux expert, but relatively proficient with it.

I tried reading "How Linux works" (free e-book), but didn't have a great time with it.

It's just too detailed for someone who just wants to use Linux. It might be an absolutely great resource if you plan to work in IT, but other than that, just it's too much wasted time.


What helped me a lot was to use Linux as an OS for my homeserver.

You don't need anything fancy for it. Just use an old spare laptop or something similar you have laying around, or buy an used small form factor PC, like those Mini-PCs many businesses use. Those often cost less than 50 bucks and would otherwise land on the trash.

Then, install your server OS of choice. The most popular one is just plain ol' Debian, and it's what I used. It's a great choice!

Servers run without a display or GUI (DE/ WM). You set it up once, and then connect to it remotely via SSH.
With that, you can either install a web interface like CasaOS or Cockpit, or just use the CLI for everything.

For the start, you can choose just Nextcloud AIO and call it a day. It comes with all things needed for a functioning webserver. But, things said, the learning experience ends here pretty quickly. It's made to be easy and painless.

If you want to learn more, then consider setting up the stuff for yourself. It's also really not hard (coming from someone who doesn't IT stuff professionally!), but takes a bit more time, because you have a lot of choices.

For that, you might consider checking out c/Selfhosted and awesome-selfhosted on GitHub.
Theres a lot of really cool things you can discover!

The main reason I recommend that, and not just "Try LFS, Arch, Void, Gentoo, or whatever" is because I find it pretty much useless. Sure, you learn how it works, but for what price?
When you set up your own homelab, then you have actual useful things running, you also learn a lot, and maybe you can add it to your CV when applying for jobs. I for example work in the chemistry sector, where IT stuff like this is pretty useless on the first glance, but I often got invited for a job interview exactly because of that. It's just a nice skill to have!


For checking out great CLI tools, check out the according video from TheLinuxExperiment or other YouTube/ PeerTube videos.

Try to learn the basic commands, like cd, ls or cat, then look up for more advanced/ alternative tools, like tree (instead of ls), bat (instead of cat), and so on, and then try to learn shell scripting.

I really like using fish instead of bash, because it's a very friendly and interactive shell ;)


I hope that my comment was helpful! :)

[–] CrabAndBroom@lemmy.ml 2 points 2 months ago

One of the biggest things that helped me was setting up virtual machines and installing different versions of Linux in them and just playing around. I found it super helpful because it makes you learn different things (for example you mentioned reading the Arch wiki which is a good resource, but not all of it will apply to Mint necessarily) and as an added bonus, it doesn't matter if you break everything. You can just restore a backup, or better yet, reinstall from scratch so you get used to the process or better yet, keep breaking stuff until you come out the other side and get things working again!

[–] just_another_person@lemmy.world 2 points 2 months ago

The only way you're REALLY going to learn is be actively using things. If everything is just working, GREAT! That's all you need to know. Just keep enjoying it.

If there something specific you are using this for, let us know and we might be able to help you out.

That being said, one of the easiest to force yourself to learn where everything is, is by using the CLI instead of GUI wherever applicable. Install packages, do updates, change settings...etc.

[–] sunzu2@thebrainbin.org 1 points 2 months ago

Using LLM works great since Linux documentation is extensive and was used to train the models.

Just tell it what you want to do and it will write commands and explain how they work.

Even models that can run on mid grade consumer GPU can do this now.

You can set up a docker container for webui and load models in there.

[–] averyminya@beehaw.org 1 points 2 months ago

There's a lot of good suggestions here.

As someone who uses Linux but doesn't love it, be prepared to restart from scratch a lot. Keep the OS on a blank drive and just point the OS to your storage drives once it's up and running.

Otherwise you are going to be losing data every time you break something in the OS, and that is really no fun.

[–] olafurp@lemmy.world 1 points 2 months ago (1 children)

Step one: Find terminal that's convenient for you. For me it's yakuake and some use a runner or whatever.

Step 2: Find stuff that you do on a regular basis with your computer and do it with the terminal instead. (Open 3 programs, run a steam game or whatever)

Step 3: Use a bashrc file to make an alias for it.

Step 4: Find stuff a couple of actions you do the same way every time like open 3 work programs, start torrent + vpn or whatever and put them in a bash function inside bashrc.

You might not need it though. The terminal is has mostly only two uses in my opinion. Automate stuff and/or do stuff you can't do with the UI. I use the terminal heavily for work (programming) but hardly otherwise because the best way to break my OS is to change some OS config with terminal commands lol

[–] EuroNutellaMan@lemmy.world 1 points 2 months ago

terminal is also useful as a cross-distro way of doing things and helps avoid cluttered, bad or ugly UIs. Of course the degree at which someone prefers the terminal over a GUI and for which applications is 95% subjective, the other 5% being when either a GUI is pretty much necessary (i.e. image editing) or viceversa (i.e. automation, looking like a l33t h4x0r to impress the ladies/boys/enbies, managing the 3PBs of monkey memes)

[–] learnbyexample@programming.dev 1 points 2 months ago

I have a list of learning resources for CLI tools and scripting here: https://learnbyexample.github.io/curated_resources/linux_cli_scripting.html

I've also written a few TUI interactive apps to practice text processing commands like grep, sed, awk, coreutils, etc: https://github.com/learnbyexample/TUI-apps

[–] MXX53@programming.dev 1 points 2 months ago (1 children)

I have been using terminal almost exclusively for about a decade or more. But, when I started I just decided to do it. And that meant that every time I wanted to do something, it would take me forever because I would have to look it up. Eventually, I got faster and faster and now anything I want to do with a gui, I can almost certainly do faster with terminal.

[–] LovePoson@lemmy.world 1 points 2 months ago

This. Right now you might feel you aren't learning anything, that you are just copying what says online without understanding it. But little by little, by changing a config line the internet told you, by doing x command to search for y path, you slowly and unknowingly build up your experience with that config file or command. Next time you need to touch that same confg file or command, it'll be easier, and easier. So on until you just know it and dont need to look it up.

Give it time. Every small step builds toward the big goal. And if you know how to search and learn from the internet efficiently, you dont even need to ask here for advice. It'll come naturally

load more comments
view more: next ›