Please recommend me a good free online course to learn linux or bsd console.

hi , i know how to tinker with terminal do this and that a bit , but never ever actually officially learned properly so i need a online course / interactive website course where i can learn from absolute beginner to advance topics about linux/bsd shell.

for example that course should contain:

basic command line to advance command line
how to use man pages
history of commands and how to use it
file editing from console
stdin , stderr etc redirection
blah blah blah...

you get my point , i just need a good free online course.
i would also like to know , how did you all learned freeBSD or linux from starting to advance? and how could anyone also learn effectively

i know i could have chatgpt'ed this but AI is wrong most of time.
thanks.
 
View: https://www.youtube.com/watch?v=avg65oY7sj4

Books,
  • Absolute FreeBSD, 3rd Edition (Michael W. Lucas): A highly recommended, comprehensive guide for learning and mastering FreeBSD.
  • The Unix and Linux System Administration Handbook (Nemeth, Snyder, Hein, Whaley): r general Unix/Linux concepts, much of which applies to FreeBSD.
  • Unix in a Nutshell (O'Reilly): A great, concise reference for core Unix commands and utilities
Thank you for jotting down the resources :) , the instructor in the video explains really well.

I also found a interactive online course website known as terminal tutor.

Thanks for the books also.
 
i need a online course / interactive website course where i can learn from absolute beginner to advance topics about linux/bsd shell.

i would also like to know , how did you all learned freeBSD or linux from starting to advance? and how could anyone also learn effectively
I had the exact same situation as you when I switched from Windows to Linux distros. I had been doing some software development even on Windows, so I was using Git for Windows and thus got a clue about some very basic UNIX programs like cd, ls, cat, etc... But in general, I knew pretty much nothing about operating the system from the console (got used to GUI). And now, looking back, I can defenitely tell you that the most efficient and effective way to learn it is practice. I don't mean that you should figure everything out yourself and don't ask people who have experience, but you don't need a 'course' or whatnot to follow, really. In fact, there's no course that would cover everything that you would like to know regarding administrating UNIX system, it's experience-based only. The 'course' presumably can only tell you about basic things, if someone really want to have a little bit structured guidance, I would recommend FreeBSD Handbook that's the best sort of thing that I've seen so far.
I know that there is a confusion in the begining (and not only in the begining) that you don't even know what is possible and what the system can allow you to do (i.e. you don't know that there's a utility that can do this thing and can do this...). The answer is again - practice, but I can suggest to try:
apropos -s 1 . |less - this would list all the manual pages in the section 1 (general commands) and their description, so that you can familiarize yourself with the programs that you can use. See apropos(1).

basic command line to advance command line
'Basic' programs is essentially a filesystem navigation and operations on files, I guess? As I already mentioned, FreeBSD Handbook explains it very very good.
There's no such thing as 'Advanced' command line I believe: you just use programs to fit your needs. Perhaps you meant 'sysadmin-specific' instead, i.e. programs that allow you to configure your system? These programs are in the 8 section of man(1), so you can do the apropos(1) trick that I mentioned before and see what programs are there.

how to use man pages
Well, that's fairly simple: if you want to see the manual page for the utility named X, you just type: man X. If X has a manual page in multiple sections, say, 1 and 2, in order to get manual from section 1, you type: man 1 X. So if you see that someone mentions for instance 'sysrc(8)', it means that you can read about this program in secion 8 of man pages, i.e.: man 8 sysrc.

history of commands and how to use it
That's pretty simple too: every time you execute the command in the shell, it is saved in a special file (for instance, if you use sh(1), this file is called .sh_history) and then you can access them with shell keybindings (usually it is Arrow-{Up,Down} keys) and thus repeat recent commands.

file editing from console
Essentially, there are two main UNIX programs to edit text files: ed(1) and vi(1). Well, obviously, there is a whole host of different text editors (GUI, TUI), but these two are almost guaranteed to be in every system by default (though recently I noticed that this may not usually be the case for ed(1)). I'm not very good with vi(1), so I can't tell very much here, but for ed(1), I strongly encourage you to give it a try, I wrote a pretty descriptive post about it, you can read it.
In FreeBSD you also have ee(1), which is so intuitive and simple you don't even have to learn it. I personally like this one :)
stdin , stderr etc redirection
I believe that sh(1) may help here. But if short, every program you execute by default opens 3 files and uses integers (they are named file descriptors) to refer to them: 0 - stdin (from where the input comes), 1 - stdout (where output goes) and 2 - stderr (usually, this is where debug or error messages go, but it's not necessary). So, when you execute your command from terminal in interactive mode, stdin is your keyboard, stdout and stderr is your terminal. That means that everything you type on keyboard program will see as input, and, if program produces some output, you will see it on your screen. But this is by default, and you can change it:
program <file - now program will read input from file file.
program >file - now program will spit output info file file.
program <file-in >file-out - now program will read input from file file-in and spit it in file-out.
program 2>/dev/null - now program will not print output of stderr (2 is a file descriptor for stderr, remember?). It works because here we say that output from stderr should be written in file /dev/null instead of our screen. But /dev/null is a special file, that just throws out everything that you write in it (see null(4)).
program1 |program2 - this is a pipe. It means that output from program1 will be an input for program2 (i.e. stdin for program2 will be connected to stdout from program1).

Well, to summarize, you don't actually need any sort of course. Really. I mean, I did want to have such too, but in fact I found that practice is _way_ more powerful and effective than that. The key is to be curious, to ask questions and try to find answers yourself (how does this command work, what part of the system is responsible for that, what's the internal machinery behind this system behaviour and so on...), to write scripts yourself (to implement programs that already exist yourself). The point is: you should be able to apply your knowledge somehow and this is much easier when you are curious and creative :) This just gives you more opportunity to learn new things.

Now, I wrote a big thing and didn't probably give you what you wanted to get (i.e. a link or something). Instead of these, I would highly recommend you to watch a documentary film about UNIX from 1982.
 
Too many different CLI learning documents. It's more of creating habits and become more productive than a mouse UI clicker. Script everythhing that you do repeatedly.
I personally would have become better faster if I was confronted earlier with:
  • shell autocompletion and history search
  • grep and find
  • ssh
  • tmux
 
I don’t understand the gatekeeping. These operating systems are all grounded in C. So basically everything is Unix.

If that were the case then why are we porting Linux drivers over to BSD.

My recommendations for OP is start from the handbook and manual pages (man pages). Learn by doing and don’t be afraid to mess up.

If you have FreeBSD installed I recommend these tools
sh:
pkg install sudo nano texinfo tldr bat

# check man pages. press q to exit 
man nano
man bat
👍
 
how did you all learned freeBSD or linux from starting to advance? and how could anyone also learn effectively
Both questions have the same answer; doing it. Stop reading about it and actually install and use it. The only way to get experienced in something, is to, ehm, well, actually experience something. Run into problems, solve issues. You learn as you go along.
 
Both questions have the same answer; doing it. Stop reading about it and actually install and use it. The only way to get experienced in something, is to, ehm, well, actually experience something. Run into problems, solve issues. You learn as you go along.
i totally agree, things like vi/vim you really keep the knowledge by using daily. questions arise from a 'need to know how to do...' something and then you figure it out or you find how someone else did it.
 
Both questions have the same answer; doing it. Stop reading about it and actually install and use it. The only way to get experienced in something, is to, ehm, well, actually experience something. Run into problems, solve issues. You learn as you go along.
I run into a lot of problems, and do learn things, but lots remain unsolved. But have to admit that if it wasn't for this community a lot more issues would remain/
 
i just need a good free online course
YT has a lot of them, I won't recommend you one in particular, because I don't know them all, but you can check this , that channel contains a lot of various courses.

The problem with courses is they can't teach you everything, they guide you in one direction, but not always where you want to go, at first it helps but at some point you'll need something else, and that's where books enter in the game. I agree with fernandel , check this book "Unix Power Tools", do not let the release date foolish you, it is actually one of the best in its category 20+ years later.

I personally also like these, interesting with a different approach:

I almost forgot to mention this website, a really good one:

Good luck with your quest!
:)
 
A few remarks about what I think is important here.

Understand the difference between the core shell language and the commandline utilities used by the shell. Understand there is some overlap as some commands might have both built-in versions and external versions.

For core shell syntax understand that it depends on the shell, not the OS. Bash under FreeBSD is the same as bash under Linux. Bourne shell (or posix shell) is also the same under Linux and FreeBSD, but you need to watch out for what shell Linux gives you by default. This is where you learn about variables, word splitting, control flow, quoting (oh boy).

For external commandline tools it depends on the OS. find(1) under FreeBSD is not the same as under Linux. However, the FreeBSD ports collection makes many Linux versions available as packages. Avoid those for now and concentrate on writing portable code using common subsets of commandline arguments to the differing utilities.
 
i would also like to know , how did you all learned freeBSD or linux from starting to advance?
Game servers :cool: I was into WoW, started out with server emus on Windows XAMPP, switched to Linux, and kept expanding from there.

I'm into PC gaming; years of Intel iGPUs had me looking into ways to improve performance, which got into OS tuning. Server stuff can be tweaked for performance like game clients :p but with an interesting balance of security. Seeking performance always gives something to do :D

I learned all self-taught and had interest. I started with Linux when a PC Gamer magazine mentioned Ubuntu, and learned it as I used it. I feel courses might teach a new OS in a different manner (not sure good or bad, but there might be something about learning computing without guidance and finding your own flow vs starting from someone else's foundation; might depend on your own interest vs the course's purpose and if it's business/enterprise-tailored).

basic command line to advance command line
how to use man pages
history of commands and how to use it
file editing from console
stdin , stderr etc redirection
  • Not sure on the first, but I do stuff like make install && sync and use two &s a lot to run a command after another
  • I avoid man pages unless the --help is long :p (otherwise I just scroll through man pages quickly until I spot something relevant)
  • mv, rm, cp, a lot of basic commands are useful in a lot of scenarios and with repeated use you might find better ways of running it (like mv -Rfv)
  • I use nano or ee as basic text editors; A Vim or Emac course might be a good option!
  • I kind-of know those words, but don't reference them. For interesting commands I usually understand whether > or < might work, but I haven't needed to understand that more in-depth yet
 
We forgot to mention data backup.

More package recommendations. I call them tools. Tomato tomato
sh:
pkg install beadm

Now OP is full-proof to become the Linus Torvalds of BSD
 
basic command line to advance command line
how to use man pages
history of commands and how to use it
file editing from console
stdin , stderr etc redirection
All of the things listed above and more can be found in the O'Reilly book Classic Shell Scripting by Robbins & Beebe. It doesn't just cover shell scripting but also sed, awk, regexes, manual pages, processes etc. It also contains a lot of Unix wisdom and folklore. The TOC is listed at the O'Reilly website. I read this book again recently, learned a lot from it, and can highly recommend it.
 
hi , i know how to tinker with terminal do this and that a bit , but never ever actually officially learned properly so i need a online course / interactive website course where i can learn from absolute beginner to advance topics about linux/bsd shell.

One thing that's more useful than you think it will be: read about the UNIX philosophy. Keep reading about the UNIX philosophy, as you're learning. It will set you on a path, and help you integrate the things you're learning.

Basics of the UNIX Philosophy (Chapter 1) This is a link to a copy of a single page from the original document, which, sadly, is on a website where the TLS/SSL certificate isn't maintained and is currently expired, but this comes from The Jargon File aka The New Hackers' Dictionary by Eric Raymond et. al.)

Unix Philosophy (Wikipedia)

The Unix Philosophy by Mike Gancarz (link to Amazon, but you might be able to find a used copy on EBay or your favorite book seller will order you a copy)

Why the Unix Philosophy Still Matters by Markus Schnalke

There's lots of other good material on the web if you google "the UNIX philosophy, too, and the Wikipedia article has some good links in the bottom three sections of the article (notes and references).

I recommend reading a little something about the UNIX philosophy once a week for maybe six weeks, then once a month for your first year on your journey.

One tiny caveat: it's important to remember that the original authors of this way of thinking were working at a time when memory, storage, and processing power were all *extremely* expensive. You will view some of the examples they might give or even a few of the things that they hold up as principles to be a bit archaic, and that's a fair point.

Just take that stuff with a grain of salt, for now. You'll realize soon enough that the perspective, overall, remains incredibly valuable, and applies abstractly to almost all human endeavors in our shared project of maintaining civilization.
 
hi , i know how to tinker with terminal do this and that a bit , but never ever actually officially learned properly so i need a online course / interactive website course where i can learn from absolute beginner to advance topics about linux/bsd shell.

for example that course should contain:

basic command line to advance command line
how to use man pages
history of commands and how to use it
file editing from console
stdin , stderr etc redirection
blah blah blah...

you get my point , i just need a good free online course.
i would also like to know , how did you all learned freeBSD or linux from starting to advance? and how could anyone also learn effectively

i know i could have chatgpt'ed this but AI is wrong most of time.
thanks.
Get hold of a copy of this book : ISBN 0-13-937681
Its from 1978 and is fast introduction to files , the shell , utilities and system programming.

https://scis.uohyd.ac.in/~apcs/itw/UNIXProgrammingEnvironment.pdf

1767218157678.png
 
You can't go wrong with the classics. In addition to The UNIX Programming Environment recommended above I'd also add Advanced Programming in the UNIX Environment by Richard W. Stevens. Any book by this author is a collectible item.

Both explain the concepts as well as the implementation. Understanding is way better than memorizing. And yes, you learn only by doing. Make sure you have fun in the process.
Knowing it all is not the goal as it's not humanly possible. The goal is to comfortably swim your way around and knowing where to and how to get the information you need.
 
Back
Top