DEV Community

Cover image for Linux: A Super Hero

Linux: A Super Hero

Introduction

Linux is a powerful and versatile open-source operating system that is a Unix-like os that can be used in a variety of applications, from small-scale personal use to large-scale enterprise use.

It offers many benefits including, stability, security and flexibility, making it a popular choice for many users and organisations.

Shell

The Linux shell is a program that allows text-based interaction between the user and the operating system.

This interaction is carried out by typing commands into the interface and receiving the response in the same way.

Types of shell

  1. Bourne Shell (sh)
  2. Korn Shell (ksh)
  3. C Shell (csh or tcsh)
  4. Z Shell (zsh)
  5. Bourne again Shell (bash)

These shells may differ in their core concepts but all of them have one common thing to communicate between the users and os.

When we log into the shell, the first thing to show up to you is your home directory.

Home Directory - /home is a system-created directory that contains the home directories for almost all users in the Linux system.

It allows user to store their personal data in the form of files and folders.

Each user in the system gets their own unique home directory with all access.

Representation- It is represented by the "tilde ~" symbol in the command line.

Home Directory = ~ (tilde)
[~]$
Enter fullscreen mode Exit fullscreen mode

Commands and Arguments

To interact with the Linux system using the shell, a user has to give Commands. Like-

echo: to print a line of text on the screen use the echo command.

[~]$ echo
[~]$

Enter fullscreen mode Exit fullscreen mode

when you used echo cmd, you did not tell what you want to print and as a result, it prints nothing.

That's where an Argument comes into the picture.

An Argument acts as an input to the command.

[~]$ echo Hello
Hello
[~]$

Enter fullscreen mode Exit fullscreen mode

It's not always necessary to give arguments. There can be a lot of commands which can run without any arguments. eg:

[~]$ uptime
12:53  up 2 days, 22:05, 3 users, load averages: 2.89 2.61 2.79

Enter fullscreen mode Exit fullscreen mode

uptime

This uptime is used to print information about how long the system has been running since the last reboot.

command <arguments>
echo = command
Hello = argument

Enter fullscreen mode Exit fullscreen mode

To check your current shell use-

[~]$ echo $SHELL
/bin/bash

Enter fullscreen mode Exit fullscreen mode

shell

Fun Task:

Let's do a quick task with some basic and most important Linux commands so that you can learn by doing.

Task - Create a directory structure with 3 directories under the home directory which is already created /home/dev. These directories' name represents the categories of animal herbivorous, carnivorous and omnivorous which comes under home dir like /home/dev/herbivorous under each category there are some animals and under this some foods. Each item is a directory.

Let me explain this to you more easily with a diagram-

fun task

We will be in our home directory by default

[~]$ pwd
/home/dev

Enter fullscreen mode Exit fullscreen mode

pwd command prints the present working directory which is home in our case and dev is our username.

[~]$ mkdir herbivorous
Enter fullscreen mode Exit fullscreen mode

mkdir command is used to make a new directory on the given path

[~]$ mkdir carnivorous omnivorous
Enter fullscreen mode Exit fullscreen mode

we can create as many directories as we want by writing them in one go as the above done.

now all three directories have been created in our home path.

[~]$ ls
herbivorous carnivorous omnivorous
Enter fullscreen mode Exit fullscreen mode

ls command is used to show the list of files and folders on that particular directory.

Now we have to make directories of cows and giraffes in the herbivorous directory.

To do this, we have to change our dir from home and go inside the herbivorous dir.

[~]$ cd herbivorous
[~/herbivorous]$

Enter fullscreen mode Exit fullscreen mode

the cd command is used to change the directory.

[~/herbivorous]$ pwd
/home/dev/herbivorous

Enter fullscreen mode Exit fullscreen mode
[~/herbivorous]$ mkdir cow giraffe

Enter fullscreen mode Exit fullscreen mode
[~/herbivorous]$ mkdir cow/grasses

Enter fullscreen mode Exit fullscreen mode

here we made a new directory of grasses inside cow dir without going inside it.

[~/herbivorous]$ mkdir -p cow/grasses
Enter fullscreen mode Exit fullscreen mode

here we're creating directories cow and under that grasses together by using the <-p> option.

Let's check out some more of the basic commands

mv This mv command is used to move dir from src A to dest B

[~]$ mv /home/dev/source_dir /home/dev/destination_dir
Enter fullscreen mode Exit fullscreen mode

cp This command is used to copy file/dir from one src to another

$ ls
a.txt  b.txt  new

#Initially new is empty
$ ls new
#empty

$ cp a.txt b.txt new
#copying file a and b a file named new

$ ls new
a.txt  b.txt
Enter fullscreen mode Exit fullscreen mode

rm This command is used to remove file/dir

$ ls
a.txt b.txt new
$ rm new
$ ls
a.txt b.txt
# file named new is being removed now
Enter fullscreen mode Exit fullscreen mode

cat This command can be used in several ways. Some of them are:

$ cat a.txt
This will show the content of file a.txt

Enter fullscreen mode Exit fullscreen mode
$ cat a.txt > b.txt
This will copy the content of file a.txt to b.txt file
Enter fullscreen mode Exit fullscreen mode
$ cat > newfile
This will create a new file named newfile
Enter fullscreen mode Exit fullscreen mode

touch This command is used to create a new file

[~]$ touch /home/dev/omnivorous/human/food.txt
Enter fullscreen mode Exit fullscreen mode

Some Tips:

  • The alternative of cd cmd is pushd cmd. This cmd remembers the current working directory before changing to the directory you want.

let's say you're in home dir and want to go to /etc

[~] pushd /etc
/etc ~

Enter fullscreen mode Exit fullscreen mode

now you can dir as many times as you want cd /var cd /tmp

and to go back to the original dir use popd

[/tmp] popd
[~]

Enter fullscreen mode Exit fullscreen mode
  • To change the prompt - If you want to change the way how your prompt look to something else like your server name or your name itself
[~]: echo $PS1
[~]$
# current prompt lool like

[~]$ PS1="ubuntu-server:"
ubuntu-server:
# now it changes to the server name

ubuntu-server: PS1="[\d \t \u@\h:\w ] $ "
[Mon Mar 06 13:30:54 dev@macair:~ ] $
# now displaying with current date and time with user name too
Enter fullscreen mode Exit fullscreen mode

date, time and username before '@' and /h /w give the hostname and the present working directory of the user, followed by '$' indicating a regular user.

Kernel

The major component of the operating system and an interface between the system's hardware and processes.

It can be thought of as a bridge between the hardware and the software components of a computer system.

[~]$ uname
Linux
Enter fullscreen mode Exit fullscreen mode

Let's say you are running a program that needs access to the computer's memory. when the request is made, the kernel is responsible for granting the program access to the memory.

[~]$ uname -r
4.15.0.72-generic
Enter fullscreen mode Exit fullscreen mode

This shows up in the kernel versions.

kernel

The kernel looks up the four major tasks-

  1. Memory Management - Keeps track of how much memory is used.
  2. Process Management - Which process can use the CPU?
  3. Device Drivers - An interpreter between the hardware and the processes.
  4. System Calls & Security - Receive requests for services from the processes.

Some Core Concepts

  • File Compression:

To inspect the size of the file use du command

filecom

du stands for Disk Usage and -sh is a humanly readable size format.

  • Archive File:

Grouping multiple files into a single directory or a single file, you can use tar command

archive

-c flag specifies that the tar should create a new archive.

-v flag specifies that the tar will display the name of the file added to the archive.

-f flag specifies the name of the archive file that tar should create.

-cvf together, it will create a new archive with the specified name and add the specified files to it while displaying their names as they are added.

-xf flag is used to extract the contents from the tar file.

xf

-czvf flag is used to compress the tar file to reduce its size.

czvf

the tar archive "mydoc.tar" was created, and its content was compressed using gzip to create a compressed tar archive named "mydoc"

  $tar -czvf mydoc.tar.gz mydoc/
  mydoc/
  mydoc/file1.txt
  mydoc/file2.txt
  mydoc/file3.txt

Enter fullscreen mode Exit fullscreen mode

-c creates a new archive file.

-z compress the archive using gzip.

-v displays the verbose output during the creation of the archive.

-f specify the name of the archive file.

source:

KodeKloud

geeksforgeeks

And that's all for you to start your Linux ride. I have done my certifications in Linux Basics Course from KodeKloud.

I am not promoting anything, just sharing my learning resources if you want to check them out.

You can have the training and get certified by Linux Foundation itself.

Linux Training & Certifications

Thanks for the read!๐Ÿ–ค๐Ÿง

Top comments (1)

Collapse
 
ritik_raj_eb4e6e986982918 profile image
Ritik Raj

When I was setting up my Linux server on Vultr, I encountered some initial challenges with configuring and deploying the right Linux distribution for my needs. I needed a platform that could support seamless integration and ensure high performance, so I turned to Vultr. Their Linux server deployment guides were incredibly helpful, and I was able to quickly set up Ubuntu with just a few steps.

The Vultr documentation helped me understand how to configure my server properly and even optimize it for my specific use case. One of the best parts was learning about the Vultr Managed Databases, which made managing PostgreSQL easier than ever without worrying about high availability or scaling issues.

In the end, I found Vultrโ€™s infrastructure support for Linux to be top-notch, and I was able to troubleshoot issues quickly, making my experience much smoother. If youโ€™re running into problems or need more advanced setups, I highly recommend checking out the resources they offer. It really made a difference in resolving my concerns.