Unlocking Linux: A Beginner's Guide to Essential Commands and Functions
Tags: devops, bash, linux, beginners
Published: 2024-05-08 09:12:13

Linux is like the engine that powers a lot of the internet. It's everywhere, from websites to smartphones to supercomputers. As a DevOps engineer, you work with software and systems to make sure everything runs smoothly. Linux is crucial for this because it's stable, secure, and flexible. It's also free, which is great for businesses. Learning Linux helps you understand how to manage servers, automate tasks, and deploy applications. So, if you want to be a DevOps engineer, learning Linux is like learning the language of the internet!

Linux, the operating system powering much of today's digital world, might seem like a complex maze to navigate, but fear not! In this beginner-friendly guide, we'll embark on a journey through the world of Linux, starting from its basic concepts to essential commands and functionalities. By the end of this article, you'll have a solid understanding of Linux, empowering you to navigate its ecosystem with confidence.

### Understanding Linux Shell Types

Think of the Linux shell as your gateway to interacting with the operating system. There are different types of shells, each with its unique features. Let's explore a few:

1. **Bourne Shell (sh shell)**: This is one of the oldest and simplest shells. It's efficient for running scripts and executing commands.

- [Bash in 100 Seconds](https://www.youtube.com/watch?v=I4EWvMFj37g&ab_channel=Fireship)

2. **C Shell (csh or tcsh)**: Known for its C-like syntax, this shell offers powerful scripting capabilities.

3. **Z Shell (zsh)**: Zsh is highly customizable and comes with advanced features like improved tab completion and spelling correction.

4. **Bourne Again Shell (bash)**: Perhaps the most widely used shell, bash combines the features of the older shells with additional enhancements, making it user-friendly and versatile.

### Basic Linux Commands

Now, let's dive into some basic Linux commands that you'll use frequently:

- **Echo**: Used to print messages to the terminal. For example, `echo "Hello, Linux!"` will display "Hello, Linux!" on the screen.
  
- **ls**: Short for "list," this command displays the contents of a directory. For instance, `ls /home` will show the files and folders in the "/home" directory.
  
- **cd**: Stands for "change directory," allowing you to navigate between directories. Example: `cd /var/www` moves you to the "/var/www" directory.
  
- **pwd**: Displays the present working directory. Typing `pwd` will show you the directory you're currently in.
  
- **mkdir**: Short for "make directory," used to create new directories. For example, `mkdir documents` creates a new directory named "documents."

- [Basic Linux Commands](https://iitd-plos.github.io/col100/references/Linuxppt.pdf)

### Command Files

Understanding how to manipulate files is fundamental in Linux. Here are some essential commands:

- **touch**: Creates an empty file. For instance, `touch myfile.txt` creates a file named "myfile.txt."

- **cat**: Concatenates and displays the content of files. Typing `cat myfile.txt` will show the contents of "myfile.txt" on the screen.

- **cp**: Copies files or directories. Example: `cp file1.txt /backup` copies "file1.txt" to the "/backup" directory.

- **mv**: Moves files or directories. For instance, `mv file1.txt /new_location` moves "file1.txt" to "/new_location."

### Introduction to VI Editor

VI is a powerful text editor commonly used in Linux. It has two modes: command mode and insert mode. Here are some basic commands:

- **i**: Switches to insert mode, allowing you to insert text.
  
- **x or dd**: Deletes characters (x) or entire lines (dd).
  
- **yy or p**: Copies (yy) and pastes (p) text.
  
- **ctrl + u /d**: Scrolls up/down.
  
- **:w**: Saves changes.
  
- **:q**: Quits VI.
  
- **:wq**: Saves changes and quits.

[Basics of VI editor in under 8 minutes](https://www.youtube.com/watch?v=-_DvfdgR-LA&ab_channel=LabIT)

### Managing User Accounts

Linux allows you to manage user accounts efficiently. Here are some commands:

- **whoami**: Displays the current username.
  
- **id**: Shows information about the current user.
  
- **su**: Switches user. For example, `su username` switches to the user "username."
  
- **ls /root**: Lists the contents of the root directory.
  
- **sudo ls /root**: Lists the root directory with superuser privileges.

### Downloading Files

Downloading files is a common task in Linux. Here are two methods:

- **curl**: Downloads files from a URL. Example: `curl http://example.com/file.txt -o file.txt` downloads "file.txt" from "http://example.com" and saves it locally.
  
- **wget**: Similar to curl, wget also downloads files from URLs. Example: `wget http://example.com/file.txt` downloads "file.txt" from "http://example.com."

### Package Managers

Package managers simplify the installation and management of software packages. Let's explore two popular package managers:

- **[RPM (Red Hat Package Manager)](https://www.youtube.com/watch?v=9zXBco0Zs3c&t=71s&ab_channel=45Drives)**: Used primarily in Red Hat-based distributions like CentOS. Commands include `rpm -i` for installation, `rpm -e` for removal, and `rpm -q` for querying package information.
  
- **[Yum](https://www.youtube.com/watch?v=i0G0cuYv7eo&t=64s&ab_channel=RedHat)**: A high-level package management tool built on top of RPM. Common commands include `yum install` for installation, `yum remove` for removal, and `yum repolist` for listing repositories.

### Managing Services in Linux

Linux services are background processes that run continuously. Here's how to manage them:

- **Service**: Command-line tool for managing system services.
  
- **Systemctl**: Controls the systemd system and service manager. Commands include `start`, `stop`, `status`, `enable`, and `disable`.

- [How To Manage Linux Services with systemctl and journalctl | Sysadmin Basics](https://www.youtube.com/watch?v=3kl62YSU9XA&ab_channel=AkamaiDeveloper)

### Conclusion

Congratulations! You've taken your first steps into the fascinating world of Linux. Armed with this knowledge, you're ready to explore further and unlock the endless possibilities that Linux offers. Keep practicing, experimenting, and embracing the open-source spirit. Happy learning!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ytitz2wt4jsufejox9yx.gif)


**Okay, that’s it for this article.**
Also, if you have any questions about this or anything else, please feel free to let me know in a comment below or on [Instagram](https://www.instagram.com/_abhixsh/) , [Facebook](https://www.facebook.com/abhi.haththakage/) or [Twitter](https://twitter.com/abhixsh).

Thank you for reading this article, and see you soon in the next one! ❤️