A lot of people want to learn Linux, but they don’t know where to start, or even where Linux is going, and they’re confused. With this in mind, I wrote an article on Linux directionality that accidentally went viral:

How good is Linux?

After reading this answer, I believe that many of you know at least a few of the directions that Linux practitioners are currently working in, and have a general idea of which direction to choose.

Let me introduce myself. I am Liang Xu. I majored in machinery for my undergraduate and master’s degrees. After graduation, I changed my profession to IT by self-study from zero and was employed by a fortune 500 foreign company one year later.

This article will introduce some Linux learning methods according to my working experience and exchange with peers, and at the end of the article presents some Linux books and video tutorials and other resources, I hope to help you!

Paper books

For Linux book recommendations, I have specially written several answers to introduce, here will not repeat the answer:

Is there a good primer to learn Linux?

How to learn Linux command?

Is there a better book than Birdman’s Linux Recipes?

What good books do you recommend for embedded Linux?

Resource article

No matter what technology you are learning, resources are essential. In those days, I taught myself to change careers, relying on a large number of high-quality resources. Quality resources will help you get started quickly.

I also shared all the high quality resources that I used by myself, which can be obtained free of charge by replying to “Jane Book” in the background of my public account “Liang Xu Linux”.

Of course, I’ve also compiled some other good resources for this answer, which you can check out:

What are some good Linux learning resources?

How to get started and learn Linux in depth

1. Linux learning path

Linux application development self-study road this article introduced me from scratch to learn the complete process of switching to Linux, by many large reprint, and influenced a lot of people, we can refer to.

Is it possible to teach yourself simple programming? This article introduces in more detail how I learned to change my career by myself, including my heart process, the process of changing my career, what I need to pay attention to in the process of changing my career, and how to change my career more efficiently and successfully.

This is a technical master organized Linux mind map, including: Linux learning path, Linux basic entry, Linux kernel learning route, Linux command reference, Linux command quick check and so on. This map is not 100% comprehensive, but if you can master everything in it, you are a master.

image

2. Build a Linux environment

2.1 VM Installation and Configuration

If you want to learn Linux, you definitely need a Linux environment. There are two options for setting up the environment: 1. 2. Install it on a physical machine. For these two choices, I prefer the first one, because it is ok to learn some commands and basic knowledge directly on the VIRTUAL machine.

Install Linux virtual machine by hand

How to configure Linux virtual machines

Two types of VMS are commonly used: Vmware and VirtualBox. Vmware is more powerful, but for a fee. VirtualBox, while not as powerful as Vmware, is perfectly adequate for novices. Wmare is used in these two articles to teach you how to install and configure virtual machines. All the way down, you can install and configure virtual machines, complete the most basic setup.

image

2.2 File Sharing between hosts and VMS

After the VIRTUAL machine is installed, there is another important task to be done. That is, the communication between the virtual machine and the host is to share files with each other. There are many ways to implement file sharing. Generally speaking, there are the following ways:

  • File sharing is implemented using FTP
  • File sharing is implemented using the Samba protocol

In particular, Vmware has its own way of sharing files, and VirtualBox probably has one too, but I haven’t looked into it. For file sharing between Windows and Linux, we usually use a powerful sharing tool — WinSCP, of course, there are many similar tools, such as Xftp, FileZilla. All of these tools are based on FTP protocol and are very convenient to use.

image

2.3 Terminal Tools

As Linux engineers, we spend a lot of time at the command line, both in operations and development. I usually leave the virtual machine open and use terminal tools to remotely operate the virtual machine. Here I recommend a very powerful terminal tool — MobaXterm. Its function is very powerful and the interface is also very friendly. I love it after using it once.

Of course, there are many useful terminal tools such as XShell, secureCRT, Putty, Telnet, etc. Just choose your favorite one.

2.4 Programming Tools

If you’re a Linux developer, programming is probably part of your job. My usual approach is to use code editing tools on Windows to compile the code and then compile it under Linux. I often use two tools: Notepad++ and Sourceinsight.

Use notepad++ to remotely edit virtual machine documents

Code reading magic — Sourceinsight

Of course, we can write code directly in Linux and compile it in Linux. There are many programs for writing code under Linux, and they are commonly used such as the sexiest editor, Sublime Text.

image

3. Linux basics

After the Linux environment is built, we can formally enter the Study of Linux.

3.1 Linux Architecture

To learn Linux, we must know what the Linux system architecture is. In general, Linux consists of the following parts:

  • The kernel
  • bootloader
  • The file system
  • Shell
  • The application

The kernel, the core of a Linux system, works directly with hardware down and connects applications up. It is maintained by the Linux community, with Linus at the heart of it. The kernel, written mainly in C and a little assembly language, is one of the most well-known open source projects. The source code for the kernel is here, but for starters, don’t expect to understand it.

Beginners only need to understand some basic kernel architecture, and later can further study. There is a very classic kernel architecture diagram on the web that you can use to understand the kernel.

image

Bootloader is a single chip computer program used to boot the system. This procedure is relatively simple, some master even hand-written bootloader procedures.

Linux file systems include ext3 and ext4, while Windows file systems include FAT32 and NTFS. Engineers who do low-level development need in-depth understanding, which will not be described here.

3.2 the Shell

The Shell is the user interface of the system and provides an interface (command interpreter) for the user to interact with the kernel. Its basic functions are shown below:

image

For the use of Shell, there are many pits, beginners must avoid. Here, I have also found two Shell interview questions to help you learn and progress:

24 required Shell script interview questions

10 actual combat and interview [common Shell script] writing

3.3 Vim

Vim is a very important editor in Linux, however, it is difficult, very unfriendly for beginners, and claims to be an ancient artifact. Vim has many commands, so we will first learn the basic commands of Vim.

If you think Vim is hard to learn, let me introduce a game to improve Vim. Inspired by PacMan, the game lets you use Vim’s commands to control the main character to avoid monsters. Play this game skillfully, your Vim level is also a big step up.

Of course, if it is the official standard version of Vim, it is actually very difficult to use. Fortunately, the Vim community is full of great people who have developed useful plugins to make Vim easier to use, such as the following three very useful plugins:

Three utility plug-ins for Vim

3.4 other

In addition to the above three points, Linux system also has a lot of basic knowledge, which is too detailed to be covered in an article. It needs to be learned slowly in practice.

For example, the directory structure of Linux system is a tree structure, which is fundamentally different from Windows system.

image

Also, Linux has a lot of shortcuts, and mastering them can make us a lot more productive.

Virtual terminal shortcut keys

4. Linux command

As we all know, Linux has a lot of commands, but don’t take on too much when you start learning Linux. For ordinary people, learn some basic commands first, and then expand on other higher-level commands.

Linux command format and directory processing commands

Super easy to use Unix/Linux command skills for your detailed interpretation

A command line minimalist tutorial for Linux geeks

The 10 most dangerous Commands in Linux

There are probably only twenty or thirty common commands, and when you know them all very well, you are just getting started. Of course, don’t underestimate these basic commands, many basic commands have their own advanced usage, when you play through the advanced usage, you start to slowly out of the white.

5 Minutes From Getting started to Mastering the more command

Advanced usage of the ls command in Linux 8 Examples

7 SSH commands you didn’t know about on Linux

image

5. Linux artifact

Working with Linux, there are some tools that can greatly improve your productivity. Some of these tools may be familiar, but there are many more that you probably haven’t even heard of.

For example, we programmers often need to draw some flow charts. We can use some drawing tools such as EA, but many of these tools are huge and difficult to learn. In Linux, we can use the dot tool for simple and efficient drawing!

Programmer easy drawing artifact

image

For example, if we collaborate with colleagues on development, we want to record our operation process, send it to colleagues and then colleagues continue your work. Or, if someone is using your computer, you want to record what they’re doing to avoid controversy. This is where the Script command comes in handy.

Loggers in Linux terminals

Of course, there are a lot of very practical artifacts, I don’t have space to list them all.

How to efficiently back up to a specific level directory?

Front and background management of Linux tasks

How to efficiently switch directories in Linux?

6. Linux fun apps

Work is boring. We have to find some fun in it. As a free operating system, a large number of enthusiasts have written many interesting applications for Linux, which can not only help us improve our work efficiency, but also bring fun to our boring life.

Linux terminals are dark and can only display a few characters, and I’ve never seen images, but in fact, Linux terminals can display images as well as characters (which can then be used to view goddess photos). How does that work? This article has the answer:

What? Linux terminal can also be used to see goddess photos?

image

It is not easy to be laughed at at school by teachers and classmates, laughed at at work by bosses and colleagues, and laughed at by friends even when you go out for a casual masturbating. That’s fine. After all, we’re all the same, we’re all human. But how would you feel if you were ridiculed by a Linux terminal?

Believe it or not, I’ve been ridiculed by Linux terminals… .

[alvin@VM_0_16_centos ~]$ sldkf Why are you doing this to me? ! -bash: sldkf: command not found
[alvin@VM_0_16_centos ~]$ iehf

  You are not as bad as people say, you are much, much worse.

-bash: iehf: command not found
[alvin@VM_0_16_centos ~]$ sdfas

  How many times do I have to flush before you go away?

-bash: sdfas: command not found
Copy the code

What is Git used for? As you all know, Git is a version control software that is indispensable for team work during software development. However, as a version control software, Git can be related to chat tools? The two seem to have nothing to do with each other, but imaginative foreign friends have transformed Git into a chat tool!

Git can be used to chat with a goddess?

image

And so on similar to this kind of application, although these applications are not necessary in the learning process, but can bring a lot of fun to our learning life!

7. Git

As a programmer, you are definitely not leaving Git. Git is version control software that is essential for team collaboration during software development. Sadly, Git is rarely taught in school, so many college students don’t know it exists.

Pro Git is a free and open source book that can be read online on its website.

git-scm.com/book/zh/v2

image

Git has a lot of commands, but there are few basic common ones. While working with Git, there are some Git commit specifications to keep in mind.

How to use Git effectively

Learn these two things and become a Git veteran

Git Commands you Probably Won’t Use

With Git, GitHub has to be mentioned. GitHub is a hosting platform for open source and private software projects. It is named GitHub because it only supports Git as the only repository format for hosting. Also known as GayHub because the developers are mostly male…

Many people know how to use Git, but they don’t know how to collaborate with others on GitHub.

How to make a difference on GitHub?

Beyond that, there are GitHub tricks you must bookmark

image

Afterword.

Linux is too profound to be explained in a single article. This article introduces some directional things according to some of their own experience. If you follow these directions to study, you will also become a god!

E-book + source + select Linux information access methods

In the public number “Liang Xu Linux” background reply “Jane book” can be obtained for free.

❤️ Three things after reading: If you find this article inspiring, I’d like to invite you to do three favors for me:

  1. Like, so that more people can see this content (collection does not like, is a rogue -_-)
  2. Follow me and the column and make it a long-term relationship
  3. Pay attention to the public number “good Xu Linux”, the first time to read the latest Linux article, the public number background reply 1024 send you the latest programming technology information.

image