# Resources For Learning About Linux

Discussion in 'Computer Science & Culture' started by mmatt9876, Jun 17, 2019.

1. ### mmatt9876Registered Senior Member

Messages:
767
I want to learn about Linux and how to use it. Can anybody share with me what they know about Linux and how to use it? Does anybody know where I can find information about Linux and how to use it?

Is Linux fast, free, and secure? Is it widely used?

I have heard of Linux Mint and Linux Ubuntu before. Does anybody use and like these two versions of Linux?

2. ### Google AdSenseGuest Advertisement

to hide all adverts.
3. ### przyksquishyValued Senior Member

Messages:
3,190
The best way to learn to use Linux is to install a Linux distribution on your computer and just start using it. If you install any of the popular distributions you'll get a graphical/windowing user interface similar to Windows and Mac OS and you shouldn't have too much difficulty figuring out how to use it to do basic things like run programs. I don't think you really need a tutorial or book to tell you how to click on an icon.

That said, there are some things that are done differently in Linux that might confuse you that you should be aware of. Probably the main one, if you're a beginner used to Windows, is that software is managed more centrally on Linux and the way you install programs is different than the way you do it in Windows.

Another one you won't see immediately but might start to notice is that Linux is much more modular than Windows. For example in Linux, unlike Windows, the GUI (desktop/window system) isn't an integrated part of the operating system but a separate program (actually a collection of programs). This means you can run a lot of different GUIs on top of Linux, from full desktop environments like KDE:

Please Register or Log in to view the hidden image!

to minimal window managers like twm:

Please Register or Log in to view the hidden image!

(note the simpler graphics and the absence of any kind of task bar in the second picture). It's also possible to run Linux with no GUI at all.

At some point, if you want to learn more than the basics, you'll want to learn to use the command line. (Windows also has a command line, but it's vestigial compared with Linux and mainly meant for running old DOS programs.) On this, I think this old article on the Unix "software tools" philosophy and, maybe later, Eric Raymond's book The Art of Unix Programming (available free online) make good reading concerning the philosophy and approach to software that Unix (which Linux is a variant of) comes from.

It makes a good operating system. Personally I much prefer using it over Windows for various reasons.

In my experience Linux is more responsive than Windows but how performant it is depends on the computer you are running it on and how you have it set up. See the two different GUI systems above? One of them needs a lot more memory and resources than the other one.

Depends what you mean, since Linux-based operating systems run on everything from supercomputers to smartphones. If you count smartphones and tablets then probably a lot of people are using a Linux-based OS (Android) without realising it.

If you're asking about desktop/PC use, then last I heard only 1-2% of people were using Linux as a desktop OS, although it varies a lot by background/profession. Among physicists, for example, I've seen about as many people using Linux as Mac OS or Windows.

These are among the most popular desktop Linux distributions. Both are good choices as a first Linux distribution. Linux Mint is probably the better choice if you want to have common but patented multimedia formats like mp3 working easily. It's also possible to install them on Ubuntu but you'll need to jump through some hoops to do it.

Last edited: Jun 18, 2019
mmatt9876 likes this.
4. ### Google AdSenseGuest Advertisement

to hide all adverts.
5. ### mmatt9876Registered Senior Member

Messages:
767
Thanks przyk, I will probably simply install Linux alongside Windows on my PC and just dive in.

6. ### Google AdSenseGuest Advertisement

to hide all adverts.
7. ### BowserRight Here, Right NowValued Senior Member

Messages:
8,402
I've loaded Linux Mint in the past, but I never got past the UI. I think you can invest a lot of time learning about the innards of Linux. I haven't had that much interest to spend my attention on it. I think it's interesting, but more geared towards those who love playing with the finer details of an OS.

mmatt9876 likes this.
8. ### psikeyhackrLive Long and SufferValued Senior Member

Messages:
1,087
Udemy has lots of courses.

The trick is to only buy courses when they are on sale. These sales seem to occur 2 or 3 times a month and I have been watching them since January when I started a Python and Web Development courses. During a sale a course that is normally $99 to$199 will only cost $11 to$13. Check the courses for how many hours of video they have. The longest I have seen is 45 hours while many are less than 5.

https://www.udemy.com/courses/search/?ref=home&src=ukw&q=linux&p=1&duration=extraLong

A sale is currently running through the 4th of July.

Watch the previews, some instructors have accents. Check if you have a problem with this.

Last edited: Jul 2, 2019
mmatt9876 likes this.
9. ### mmatt9876Registered Senior Member

Messages:
767
The cool thing about Linux is you can toy around with it and do what you want.

10. ### mmatt9876Registered Senior Member

Messages:
767
Thanks, I will check it out.

11. ### mmatt9876Registered Senior Member

Messages:
767
Yea, I want to learn the command line too. I had thought Linux was built from the ground up and not a variant of Unix?

12. ### przyksquishyValued Senior Member

Messages:
3,190
It's fairly easy to get started with that. The most basic thing you can do with the command line is use it to start programs. E.g., if you have Firefox installed, one way you can start it is to type "firefox &" in a terminal window and then press enter.

This is, by the way, why that minimal window manager I posted a screenshot of above, twm, doesn't have or need anything like a taskbar or program icons or "start button" to start programs. As long as you have a terminal window open you can use that to start any program you want.

Unix is not a single operating system but a family of operating systems that share common features, a design philosophy, and history. During the 1980s in particular there were several companies (including Sun Microsystems, Hewlett-Packard, IBM, and SGI) selling workstations with their own versions of Unix (Solaris, HP-UX, AIX, IRIX) installed. Linux is part of that family. It's a free and open source variant of Unix that was originally developed to run on PCs in the early 1990s, when PCs had only just become powerful enough to run a Unix-like operating system. MacOS, the operating system installed on computers made by Apple, is also a Unix variant.

Linux and its history are themselves a bit complicated. Technically, Linux itself isn't a complete operating system but only an operating system kernel. This is why you have what are called "Linux distributions". These are collections of software consisting of the Linux kernel and many system and user programs taken from different places and packaged together to make a complete, coherent operating system.

One of the earliest and most significant contributions to Linux distributions comes from the GNU project. Basically, in the 1980s, a guy called Richard Stallman started a project to create a free version of Unix. By 1991 (when the Linux kernel was released), the GNU project had all of the software they needed to make an operating system except they hadn't yet developed their own kernel. But people noticed they could get a complete, functioning operating system by porting the GNU software to run on the Linux kernel. GNU system and user applications still make up an important part of the core of Linux distributions available today.

A chapter in the Raymond book I linked to summarises the history of Unix and Linux, up to about 1999-2003 when the book was written: http://www.catb.org/~esr/writings/taoup/html/historychapter.html.

mmatt9876 likes this.
13. ### Confused2Registered Senior Member

Messages:
548
To my mind windows peaked at XP and has been downhill ever since. I now use Ubuntu for everything (business and home) but not just any Ubuntu - if you liked XP go for XUbuntu - https://xubuntu.org/ . My wife uses it for everything and she knows nothing about computers. In terms of security with Windows I think it very likely that Microsoft, Google and a lot of other people are logging your every keypress - just how much less secure than that you can get is difficult to imagine.

mmatt9876 likes this.
14. ### mmatt9876Registered Senior Member

Messages:
767
If I am correct I believe some distributions of Linux are more designed for Linux experts and mostly or completely use the command line a lot to run or install programs.

Thanks for the history and link. I had heard of the Linux kernel before. If I am correct the kernel is basically the plug between the OS system software and the computer hardware.

15. ### mmatt9876Registered Senior Member

Messages:
767
I have Linux Mint installed on an old computer of mine but I have not tried Linux Ubuntu yet. I know it is popular among Linux users.

16. ### przyksquishyValued Senior Member

Messages:
3,190
Sort of. People drawn to these kinds of "expert" distributions want control and configurability as well as efficiency. Like I said before, Linux is very modular and it's also highly configurable. This means building a Linux system from scratch involves making a daunting number of choices about how you want things configured and things like what set of system utilities and components you want to use. One of the main things beginner-friendly distributions do is simplify things by hiding this and instead making reasonable choices about most of these things that should "just work" for most people. More "expert" oriented distributions assume you want to make these kinds of choices. You can take a look at the Gentoo Linux installation instructions if you're curious about seeing an example.

Another thing to understand is something that Linux inherits from Unix, which is the use of plain text files for configuring things. For most (especially low level) things that can be configured in Linux, the configuration is stored in a simple text file that you can read and edit using any text editor. Beginner-friendly Linux distributions will typically include graphical programs that let you change some common configurations. Often what these programs do is show you an interface where you can choose things using buttons, switches, menus, sliders, and so on, and then edit whatever the relevant system configuration file is for you. But if you're familiar with the format then it's often more direct to just edit the configuration file yourself, and quite often there will be options you can change in the file that aren't covered by the graphical configuration programs.

There's something similar going on where the terminal is concerned. Often, the "real" program for doing something (e.g., changing file permissions, installing software) is a command line program or command. The graphical programs that let you do these things are often just presenting you with a nice interface and then calling the appropriate command line programs and commands to do the real work, and they often don't expose the full range of possibilities that the command line programs do.

People who use the terminal a lot often just find it can be a much faster way to get something done than fishing through menus looking for what you want.

It's maybe worth stressing that "beginner friendly" does not mean the same as "beginner only" or "for kids". Plenty of experienced Linux users also use distributions like Linux Mint or Ubuntu. After all, just because these distributions provide graphical tools for things doesn't mean you're forced to use them (you can always use the terminal and a text editor if you want), and just because you're knowledgeable enough to configure everything yourself doesn't mean it's necessarily something you want to spend a lot of your time on.

It's basically the core of an operating system that manages everything else. I'm not an expert but, for example, the kernel is responsible for managing the access other programs have to system resources like CPU time, memory, the hard disk, etc. Linux is a multitasking operating system and on a running Linux system it would be expected that you will usually have dozens if not hundreds of processes all running concurrently. The way these are kept in order and prevented from interfering with each other is that these processes are run in a protected mode where they're basically only allowed to do two things: 1) do simple calculations and access a limited block of memory allocated to them and 2) request services (allocation/deallocation of memory, open a file, start or send a message to another process, access the display, etc.) that are managed through the kernel.

mmatt9876 likes this.
17. ### Confused2Registered Senior Member

Messages:
548
If you download a Linux version like Ubuntu and copy it to a disc it will boot up, copy the stuff to your hard disc and thereafter you have most (if not all) of the things you would need for a normal office computer - spreadsheet, word processor etc.. As with windows, the operating system pretty much looks after itself - you don't need to know anything about it to use a Linux computer.

mmatt9876 likes this.
18. ### mmatt9876Registered Senior Member

Messages:
767
Thanks for the reply. It sounds like using the terminal can give you more control and options with your files. GUI looks good and can make things easier for you but if you want more control and options with your files why not use the terminal and do exactly what you want to do if need be.

So the Linux Kernel is a low level entity that deals with the CPU, hardware, OS, and memory?

19. ### mmatt9876Registered Senior Member

Messages:
767
I am using Linux Mint Cinnamon and it provides the terminal and GUI for completing tasks.

20. ### przyksquishyValued Senior Member

Messages:
3,190
So how is that going?

21. ### mmatt9876Registered Senior Member

Messages:
767
It is going good so far. I installed Linux Mint alongside Windows 10. I installed Atom and ran Python code I wrote inside Atom in the terminal. I am trying to get C code to compile and run now in the terminal. I have GCC but I think I need some more tools to compile and run C code on Linux Mint.

Last edited: Oct 16, 2019
22. ### przyksquishyValued Senior Member

Messages:
3,190
Cool.

You shouldn't really need anything other than a text editor and GCC (if you installed it via the package manager) to compile beginner-level C code (which is what you should be starting with if you're a beginner).

The usual starting example is the "hello, world" program, which when run displays the text "hello, world" on the terminal and then stops. The C code for that is:
Code:
#include <stdio.h>

int main(void)
{
puts("hello, world");
return 0;
}
To compile and run that you should normally just need to:
1. Copy that code in a text editor (e.g. Atom) and save it in a text file named with a ".c" extension (for example "hello.c").
2. Run GCC on it from whatever folder you saved it in.
3. Run the compiled program by typing its location (what folder it is in) and name.
The last two steps should look like this in a terminal ("$" is the prompt): Code: $ gcc hw.c
$./a.out hello, world$
Explanation of the second line: For historical reasons, GCC saves the compiled program in a file named "a.out" unless you tell it explicitly to use a different name (which I didn't, in the example above). The "./" just before it tells the terminal that the executable file "a.out" is located in the current folder.

You will probably need to be aware of what folder you're in and how to navigate folders from the terminal to do this successfully. You should at the very minimum look up what the terminal commands cd, ls, and pwd do and how to use them if you haven't done so already.

23. ### mmatt9876Registered Senior Member

Messages:
767
I tried compiling a simple C program I wrote within Atom, using a scripting package, but GCC could not locate the "stdio.h" C header file when I tried to run it. I tried it in the terminal too but had the same problem. I may have to download a C library and header files package and some other C or Linux Mint packages onto Linux from Ubuntu, after I check on the terminal to see if I already have them installed. If so I have another problem. I will keep working at it. I have been doing good so far.