GNU Linux from a Developer’s Eye
Tags: linux, webdev, beginners
Published: 2023-11-16 14:15:05

Linux (or GNU Linux) is a free and open-source operating system that has become the backbone of much of the modern technological landscape. While Linux has a reputation as a tool for system administrators and IT professionals, it is also an incredibly useful tool for developers.

In this blog post, I will introduce you to the basics of Linux from a developer’s perspective. We will cover the essential concepts that you need to know to be able to use Linux effectively in your development workflow.  _Note that_ All IP rights to this blog post are reserved. Since I have been facing several content piracy cases lately, this blog post has ONLY been published on [the Software, Architecture, and Cloud blog - SWAC.blog](https://swac.blog) and canonically to [dev.to](https://dev.to/khalidelgazzar) only. If you are reading it elsewhere, then [please let us know](https://swac.blog/contact-us/)

Brief Introduction to Linux
---------------------------

In this section, we will provide a brief introduction to Linux, including its history and its key features. We will also provide an overview of the various Linux distributions that are available and discuss which ones are most suitable for developers.

### What is Linux?

Linux is a free and open-source operating system based on the Unix operating system. It was created in 1991 by Linus Torvalds, a Finnish software engineer, and has since become one of the most popular operating systems in the world.

### Key Features of Linux

Linux has many features that make it an attractive choice for developers. Some of these key features include:

*   Free and open-source: Anyone can download, use, and modify Linux for free.
*   Stable: Linux is known for its stability and reliability.
*   Customizable: Linux is highly customizable, allowing developers to tailor their operating system to their specific needs.
*   Command-line interface: Linux is typically used through a command-line interface, which provides developers with powerful tools for managing their systems.

### Linux Distributions (Distros / Flavors)

There are many different Linux distributions available, each with its own set of features and characteristics. Some of the most popular distributions among developers include:

*   Ubuntu: A Debian-based distribution that is known for its ease of use and broad community support.
*   Fedora: A community-driven distribution that is known for its cutting-edge software and frequent updates.
*   CentOS: A distribution based on the Red Hat Enterprise Linux codebase that is known for its stability and long-term support.
*   Arch Linux: A distribution that is highly customizable and allows developers to build their operating system from the ground up.

### Which Linux Distro is Right for You?

Choosing the right Linux distribution is an important decision for developers. The best distribution for you will depend on your specific needs and requirements. For most developers, Ubuntu or Fedora are excellent choices due to their broad community support and ease of use.

Linux Basics for Developers
---------------------------

In this section, we will introduce you to some of the basic concepts that you need to know to be able to use Linux effectively as a developer. We will cover topics such as file permissions, user management, and the command-line interface.

### File Permissions

In Linux, file permissions are used to control who can access files and what they can do with them. There are three types of permissions: read, write, and execute. These permissions can be set for three different groups: the owner of the file, the group that the file belongs to, and all other users.

### User Management

In Linux, user management is done through the command-line interface. Administrators can create, modify, and delete users using various commands. It is important to understand how user management works in Linux to be able to control access to your development environment.

### The CLI (Command-Line Interface)

The CLI or command-line interface is a powerful tool for managing Linux systems. It allows developers to execute commands and scripts, navigate the file system, and perform various other tasks.

It can be intimidating at first, but with practice, you can become proficient and even prefer it over graphical user interfaces.

#### Basic Commands

Here are some basic Linux commands that every developer should know:

*   `cd` – change directory
*   `ls` – list directory contents
*   `mkdir` – make directory
*   `rm` – remove file or directory
*   `cp` – copy file or directory
*   `mv` – move or rename file or directory
*   `chmod` – change file or directory permissions

#### Using Pipes

Pipes allow you to redirect the output of one command to another command as input. This can be incredibly useful for manipulating and processing data.

For example, you can use the `ls` command to list the contents of a directory, and then use the `grep` command to filter the results based on a specific pattern. The following command will list all files in the current directory that contain the word “example”:

    ls | grep example
    

#### Environment Variables

Environment variables are a way to store and retrieve information that can be used by programs running on your system. They can be used to store configuration information, set paths to files, and more.

To view a list of all environment variables on your system, use the following command:

    printenv
    

You can also set and modify environment variables using the `export` command. For example, to set the `PATH` variable to include a new directory, you can use the following command:

    export PATH=$PATH:/path/to/new/directory
    

### Package Management

One of the key features of Linux is the use of package managers, which are software tools that allow you to easily install, update, and manage software packages on your system. Package managers are essential for developers who need to quickly install and configure the software they need for their development work.

#### apt-get

The apt-get command is one of the most popular and widely used package managers on Linux. It allows you to install, update, and remove packages from the official Ubuntu repositories as well as third-party repositories.

To install a package using apt-get, simply run the following command:

    sudo apt-get install <package-name>
    

For example, to install Node.js, you can use the following command:

    sudo apt-get install nodejs
    

#### snap

Snap is a new package format and package manager that is gaining popularity on Linux. It offers a number of advantages over traditional package managers, including support for sandboxing and automatic updates.

To install a package using snap, simply run the following command:

    sudo snap install <package-name>
    

For example, to install Visual Studio Code, you can use the following command:

    sudo snap install code --classic
    

#### Other Package Managers

There are many other package managers available on Linux, including yum, dnf, and pacman. The package manager you choose will depend on the Linux distribution you are using and your personal preferences.

### Text Editors

Text editors are essential tools for developers, and Linux offers a variety of options to choose from. Here are some of the most popular text editors used by developers on Linux:

#### Vim

Vim is a powerful and highly configurable text editor that is popular among developers who prefer to work in the command line. It offers a wide range of features and can be customized with plugins and scripts.

#### Emacs

Emacs is another popular text editor that is highly customizable and extensible

Conclusion
----------

In this blog post, we covered the basics of Linux and how it can be useful for developers. We started by discussing the history of Linux and how it evolved to become the most popular operating system for servers and other platforms.

We then covered the various features of Linux that make it a great choice for developers, including its flexibility, security, and scalability. We also discussed some of the key tools that are available in Linux for developers, such as the terminal, package managers, and text editors.

We then went through a step-by-step guide on how to install Linux on a computer, including creating a bootable USB drive and selecting the right distribution for your needs. We also covered some tips on how to troubleshoot common issues that you might encounter during the installation process.

 _Note that_ All IP rights to this blog post are reserved. Since I have been facing several content piracy cases lately, this blog post has ONLY been published on [the Software, Architecture, and Cloud blog - SWAC.blog](https://swac.blog) and canonically to [dev.to](https://dev.to/khalidelgazzar) only. If you are reading it elsewhere, then [please let us know](https://swac.blog/contact-us/)

Finally, we explored some advanced topics in Linux that can be useful for developers, such as virtualization, containerization, and cloud computing. We also discussed some of the key differences between Linux and other operating systems, such as Windows and macOS.

Overall, Linux is a powerful and versatile operating system that can be an excellent choice for developers. Whether you are building web applications, mobile apps, or desktop software, Linux has the tools and features that you need to get the job done.