<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Prashant Pal</title>
    <description>The latest articles on DEV Community by Prashant Pal (@prashant_1111).</description>
    <link>https://dev.to/prashant_1111</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2174735%2Fc749bf72-1129-48aa-823c-c0cd249de24d.jpeg</url>
      <title>DEV Community: Prashant Pal</title>
      <link>https://dev.to/prashant_1111</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prashant_1111"/>
    <language>en</language>
    <item>
      <title>HTTP Basics🌍</title>
      <dc:creator>Prashant Pal</dc:creator>
      <pubDate>Mon, 03 Mar 2025 10:11:57 +0000</pubDate>
      <link>https://dev.to/prashant_1111/http-basics-3dmp</link>
      <guid>https://dev.to/prashant_1111/http-basics-3dmp</guid>
      <description>&lt;p&gt;Hi! Welcome back to the blogs again. It's been a while since I last uploaded my blogs. So in today's blog, I will try to explain what HTTP is and its basics. I am no expert; I'm just a learner who is trying to understand different things that are essential to my DevOps journey. Now let's begin.🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  What is HTTP🌐
&lt;/h2&gt;

&lt;p&gt;HTTP is a protocol that allows client to communicate with servers. Here client is web-browsers or apps. It follows &lt;strong&gt;Request Response Model&lt;/strong&gt;. Clients send the request and server processes the request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Request Structure📝
&lt;/h2&gt;

&lt;p&gt;The request structure consist of:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Request Line&lt;/li&gt;
&lt;li&gt;Headers&lt;/li&gt;
&lt;li&gt;Body(Optional)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Request Line&lt;/strong&gt;&lt;br&gt;
It defines the HTTP method, URL and HTTP version.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /users HTTP /1.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Headers&lt;/strong&gt;&lt;br&gt;
It contains additional information like content type, authorizations etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Content-Type: application/json
Authorization: Bearer&amp;lt;token&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Body&lt;/strong&gt;&lt;br&gt;
It contains data for POST and PUT requests.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{  
    "name": "Pal",
    "email": "example mail"

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response Structure 🛠️
&lt;/h2&gt;

&lt;p&gt;The response structure contains:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Status Line&lt;/li&gt;
&lt;li&gt;Headers&lt;/li&gt;
&lt;li&gt;Body&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Status Line&lt;/strong&gt;&lt;br&gt;
If the request was successful.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP /1.1 200 OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Headers&lt;/strong&gt;&lt;br&gt;
It contains metadata like content type and server details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Body&lt;/strong&gt;&lt;br&gt;
The actual response data is stored in it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "id": 1,
    "name": "Pal",
    "email": "example mail"

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common HTTP Methods📜
&lt;/h2&gt;

&lt;p&gt;There are five HTTP methods:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET - Retrieve data from server.
POST - Create a new resource.
PUT - Update an existing resources completely.
PATCH - Partially update a resource.
DELETE - Remove a resource.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP Status Codes💬
&lt;/h2&gt;

&lt;p&gt;Following are the code:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;200 OK - Request was successful.
201 CREATED - Resource successfully created.
400 BAD REQUEST - Client Sent invalid data.
401 UNAUTHORIZED - Authorization required.
403 FORBIDDEN - Client doesn't have permission.
404 NOT FOUND - Resource doesn't exist.
500 INTERNAL SERVER ERROR - Server side issue.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Hands On with POSTMAN API📱
&lt;/h2&gt;

&lt;p&gt;I use Postman API to understand how these request works. Here are some screenshot for better understandings how things work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkd17vfvj2ha0aer3daxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkd17vfvj2ha0aer3daxm.png" alt="GET" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiw9aml4nfnfdbm8tjxho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiw9aml4nfnfdbm8tjxho.png" alt="POST" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion🎯
&lt;/h2&gt;

&lt;p&gt;HTTP is a foundational protocol for the web, enabling communication between clients and servers. Understanding how HTTP requests and responses work, along with the status codes and HTTP methods, is crucial for anyone in DevOps or web development. Whether you're sending data, retrieving information, or debugging issues, HTTP knowledge will come in handy in every aspect of web applications. 🌍&lt;/p&gt;

&lt;p&gt;Feel free to experiment with Postman or any other tools to get hands-on experience. By practicing, you’ll better grasp how HTTP plays an essential role in modern applications. Keep learning and building! 💻 &lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Learning Git 101</title>
      <dc:creator>Prashant Pal</dc:creator>
      <pubDate>Wed, 18 Dec 2024 09:25:28 +0000</pubDate>
      <link>https://dev.to/prashant_1111/learning-git-101-27ci</link>
      <guid>https://dev.to/prashant_1111/learning-git-101-27ci</guid>
      <description>&lt;p&gt;📚 In my recent blogs, I've shared my Linux learnings so far. 🌐 Although I haven't yet written about Linux networking, I’ll soon compile what I’ve learned in that area. Today’s topic, however, is version control! 🔄 I’ll be focusing on GitLab, which is similar to GitHub, and I’ll share everything I’ve learned about using it. 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  Why There Is a Need for Git? 🤔
&lt;/h3&gt;

&lt;p&gt;While working on a project different developers work on the same code 🧑‍💻👩‍💻. They have different roles in that project, like frontend, backend, testing, etc. 🖥️🔍 And we need to share the same code with different developers. So, how do we share the code with each other? 🤷‍♂️&lt;/p&gt;

&lt;p&gt;Here comes Git! 🚀 In Git code is hosted centrally on the internet in a code repository 📂🌐. Now every developer has an entire copy of the code locally 💾. Code is fetched from the remote repository 📥 and pushed to the code repository 📤. Git knows how to merge changes automatically 🤖.&lt;/p&gt;

&lt;p&gt;But there’s a problem when the same line is changed by two developers 🛑, Git can’t fix it, and it causes merge conflicts ⚠️. The best practice is to keep pushing and pulling to the repository 🔄. Version control keeps a history of changes 📜, and you can revert the commits you made ⏪.&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic Concepts of Git 🛠️
&lt;/h3&gt;

&lt;p&gt;Git is the most popular version control tool 🌟. Here are some key concepts you should know:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remote Git Repository 🌐: These are centrally hosted repositories. You can manage them using various version control tools like GitHub, GitLab, Bitbucket, etc. 🖥️ It can be public or private 🔐.&lt;/li&gt;
&lt;li&gt;Local Git Repository 💻: These repositories are hosted on your system.&lt;/li&gt;
&lt;li&gt;History of Code 📜: You can view your Git history by typing the command git log.&lt;/li&gt;
&lt;li&gt;Staging 📝: This is the area where you decide which changes to commit. Staging prepares the code for committing ✅.&lt;/li&gt;
&lt;li&gt;Git Clients 🔧: These tools help developers interact with Git repositories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note 📝: Companies often use their own Git servers, like Bitbucket.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Set Up a Repository 🛠️
&lt;/h3&gt;

&lt;p&gt;There are different version control tools available 🌐. First, create an account on any platform. Here, I use GitLab, which is similar to GitHub 🖥️.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0rnixwu6fcwre275x7wc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0rnixwu6fcwre275x7wc.png" alt="GitLab Dashboard" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After making an account 📝, we need to connect the Git client with the remote platform 🌐. This involves authenticating GitLab to enable pushing changes from the local repository 💻 to the remote repository 📂. For this, we can set it up by adding an SSH key 🔑.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwiadwtsk8hln2ztmrtc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwiadwtsk8hln2ztmrtc5.png" alt="creation of SSH key" width="800" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After doing this 🔑, GitLab can authenticate us when pushing or pulling from the repository 🔄. You can check the next steps to clone the repository 📂⬇️.&lt;/p&gt;

&lt;h3&gt;
  
  
  Work with Git ✨
&lt;/h3&gt;

&lt;p&gt;There are mainly 3 stages 🛠️:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Working directory 📝: Where new files are created. &lt;/li&gt;
&lt;li&gt;Staging area 📂: This represents that files are ready to push. Use git add to get the file in the staging area so it can be committed.&lt;/li&gt;
&lt;li&gt;Local repository 💾: Here you can commit the changes. This is your system on which you are working.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I am creating a basic file to show how we work with Git. I create a README.md file 📄. After creating, type the command git status. This command shows the current status of the local Git repository 📊.&lt;/p&gt;

&lt;p&gt;After that, we use the command git add . to move the file to the staging area. Then, type the git status command. It will show the file in green color ✅, which means that the file is in the staging area. Now it can be tracked.&lt;/p&gt;

&lt;p&gt;It's time to commit the changes 🎉. Use the command git commit. Here is the screenshot of the commands I have used 📸.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxsqhqqkgh6tv0vui9abp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxsqhqqkgh6tv0vui9abp.png" alt="GIt status" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now it is time to push the work to remote repository that is on GitLab. Simply just write the command &lt;code&gt;git push&lt;/code&gt; in the terminal it will do the work.&lt;/p&gt;

&lt;p&gt;Note:- If you stuck and getting error I suggest use StackOverFlow or use ChatGpt to resolve the issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initializing a Repo 🛠️
&lt;/h2&gt;

&lt;p&gt;If you have worked on your project locally and you want to push it to your GitLab account 🐙, there is a way to make that happen.&lt;br&gt;
You need to make that folder a Git repository 📁. Use the command git init to initialize a Git repo. Now follow the same steps above.&lt;/p&gt;

&lt;p&gt;But you might notice there is an error while pushing the code 🚨. This happens because there is no destination defined. To fix this, create a repository on your GitLab account 🛡️. After creating it, you will see a section "Push an existing folder" 📋. From there, copy the git remote add command and paste it into your terminal 💻.&lt;/p&gt;

&lt;p&gt;However, you might still get an error related to the master branch ⚠️. To resolve this, use the command showing in your terminal: git push --set-upstream origin master 🔗. Now the branch is connected too ✅.&lt;/p&gt;
&lt;h2&gt;
  
  
  Branching Concepts 🌿
&lt;/h2&gt;

&lt;p&gt;The Master Branch 🛠️ is known as the main branch. It is created by default when you initialize a Git repository. New features, bug fixes, and stacks of changes in the master branch help divide the work among developers by creating a branch for each feature ⚡.&lt;/p&gt;

&lt;p&gt;How to create a new branch? 🤔&lt;br&gt;
The best practice is one branch per bugfix or feature 🐛✨. Developers can commit without worrying about breaking the main branch 🚀. Once changes are complete, merge the branch 🛡️. Then, a new version can be released 🎉.&lt;/p&gt;

&lt;p&gt;However, large feature branches 📏 that stay open for too long increase the chance of merge conflicts ⚠️. By having separate branches, the main branch remains stable ✅.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;git pull&lt;/code&gt; command is used to refresh new changes in the remote repository 🔄. To switch between branches, use the command &lt;code&gt;git checkout &amp;lt;branch name&amp;gt;&lt;/code&gt; 🔀.&lt;/p&gt;

&lt;p&gt;To create new branches in the CLI 🖥️, first type git checkout master to switch to the master branch. Then, create a new branch by using the command &lt;code&gt;git checkout -b &amp;lt;branch name&amp;gt;&lt;/code&gt; 🆕. This command will create a new branch and automatically switch you to it 🚀.&lt;/p&gt;

&lt;p&gt;However, this branch exists locally only 🗂️ and does not replicate in the remote repository 🌐. To sync it with the remote, make changes, commit those changes, and use the command:&lt;br&gt;
&lt;code&gt;git push --set-upstream origin &amp;lt;branch name&amp;gt;&lt;/code&gt; 🔗.&lt;/p&gt;

&lt;p&gt;Note 📝: In a project, there are typically two branches:&lt;br&gt;
Master branch 🛠️ (main branch).&lt;br&gt;
Develop branch ⚙️ (ready for production).&lt;/p&gt;
&lt;h2&gt;
  
  
  Merge Requests 🔄
&lt;/h2&gt;

&lt;p&gt;Merge requests are typically done by other developers 👨‍💻👩‍💻. Afterward, experienced team members 👓 review the code before merging the changes.&lt;/p&gt;

&lt;p&gt;This process ensures that the master branch 🛠️ remains stable ✅.&lt;/p&gt;
&lt;h2&gt;
  
  
  Deleting Branches 🗑️
&lt;/h2&gt;

&lt;p&gt;After completing work on a branch, it’s a good practice to delete it 🧹. Branches can be deleted in two ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Through the remote repository 🌐:&lt;br&gt;
Simply go to the branches section in your account and delete the branch 🖱️.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the local environment 🖥️:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First, switch to the master branch and pull the latest changes:&lt;br&gt;
&lt;code&gt;git checkout master &amp;amp;&amp;amp; git pull&lt;/code&gt; 🔄.&lt;br&gt;
Then, delete the branch locally using the command:&lt;br&gt;
&lt;code&gt;git branch -d &amp;lt;branch name&amp;gt;&lt;/code&gt; 🗂️.&lt;/p&gt;
&lt;h2&gt;
  
  
  Rebase 🔄
&lt;/h2&gt;

&lt;p&gt;Imagine you’re working in a bug-fix branch 🛠️ and have made some changes. At the same time, another developer also makes changes in the same branch 🔀 or in the remote repository 🌐. The changes made in the remote repository won't be reflected in the local repository of the first developer and vice versa.&lt;/p&gt;

&lt;p&gt;In this scenario, Git will show that there are some changes. First, you need to pull those changes ⬇️ and then push your own changes ⬆️. This could result in multiple commits being pushed, which is not a best practice ⚠️.&lt;/p&gt;

&lt;p&gt;To solve this, use the command:&lt;br&gt;
&lt;code&gt;git pull -r&lt;/code&gt;🔗.&lt;br&gt;
This command rebases the changes, stacking your commits neatly on top of the latest remote changes 📚.&lt;/p&gt;
&lt;h2&gt;
  
  
  .gitignore File 📄
&lt;/h2&gt;

&lt;p&gt;When you work on a project in your local environment 🖥️, certain files are generated, such as dependencies, build files, and other temporary files ⚙️. To exclude these files or folders from being tracked by Git 🛠️—especially those specific to your editor—you can use a .gitignore file 🚫.&lt;/p&gt;

&lt;p&gt;For example, in build folders where compiled code is located 🏗️, you can create a .gitignore file and list those files or folders to prevent them from being tracked. This keeps your repository clean and focused on important files ✅.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./idea/*
/build/*
/node_modules/* 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To stop tracking a file use command &lt;code&gt;git rm --cached &amp;lt;folder name&amp;gt;&lt;/code&gt;.&lt;br&gt;
To revert commits use command:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git reset --soft Head~1
git commit --amend
git push --force
git revert &amp;lt;commit id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And git merge 🔄 merge the changes from the master branch 🛠️ to another branch 🔀, make sure that your local master branch 🖥️ is up-to-date ✅ for that use git checkout master, git pull, go back to your branch 🔁 git merge master 🔗.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources 📚🌐💡
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;How to make ssh keys &lt;a href="https://docs.gitlab.com/ee/user/ssh.html" rel="noopener noreferrer"&gt;Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Git Cheat Sheet &lt;a href="https://education.github.com/git-cheat-sheet-education.pdf" rel="noopener noreferrer"&gt;Link&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclude ✅🔚✨
&lt;/h2&gt;

&lt;p&gt;In this blog, I’ve covered the basics of Git 🧑‍💻, but there are still plenty of concepts I couldn't cover 📚. Git is a vast tool with much more to explore. In my next blog, I will dive into build tools 🔧, starting with npm for JavaScript and Maven and Gradle for Java applications ☕. Stay tuned for more! 🚀&lt;/p&gt;

</description>
      <category>git</category>
      <category>gitlab</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>🌱 How to Set Environment Variables in Linux</title>
      <dc:creator>Prashant Pal</dc:creator>
      <pubDate>Mon, 28 Oct 2024 12:25:43 +0000</pubDate>
      <link>https://dev.to/prashant_1111/how-to-set-environment-variables-in-linux-4k8k</link>
      <guid>https://dev.to/prashant_1111/how-to-set-environment-variables-in-linux-4k8k</guid>
      <description>&lt;p&gt;🌐 Each user has their own system configuration, like which 🖥️ browser is set as default, which 🔧 shell is set as default, etc. 👤 Users can configure their system environment according to their needs. Environment Variables are used to store user environment information.&lt;/p&gt;

&lt;p&gt;1.📝 The information in environment variables is represented in form of KEY = VALUE pairs, for eg. &lt;code&gt;SHELL=/bin/bash&lt;/code&gt;.&lt;br&gt;
Here &lt;strong&gt;SHELL&lt;/strong&gt; is the name of the variable and &lt;strong&gt;/bin/bash&lt;/strong&gt; is the value.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The environment variables are available for whole environment 🌍.&lt;/li&gt;
&lt;li&gt;Remember name of all variables should be uppercase 🔠. &lt;/li&gt;
&lt;li&gt;You can change environment variables values accordingly 🔄.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to see env in CLI 🐚
&lt;/h2&gt;

&lt;p&gt;To print env variables there is command &lt;code&gt;printenv&lt;/code&gt; that prints all env variables SHELL, HOME, USERNAME, LANG etc 🖨️✨.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctmv4pl0jx3jmz64fhty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctmv4pl0jx3jmz64fhty.png" alt="Printing ENV" width="800" height="490"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can print specific env variable by typing the variable name, for eg. &lt;code&gt;printenv USER&lt;/code&gt; 🖨️. You can also use pipes and grep command to find similar variable name 🔍🛠️.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌱 Creating Own Environment Variables
&lt;/h2&gt;

&lt;p&gt;🌟Why to create own environment variables,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;🔒To protect sensitive data for an application. When the application needs to run on servers it needs credentials to access. You can use environment variables to store those user name and password. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By this application becomes more flexible 🔄. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now lets create:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;export&lt;/code&gt; is used to create a env variable, for eg:- &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx2u2xop9ip3xbe6gtf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx2u2xop9ip3xbe6gtf5.png" alt="Creating env" width="800" height="644"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;2.🚫 To remove the variable we use &lt;code&gt;unset&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:-&lt;/strong&gt;  📌 Using export command to make variable is only available in  current session. Once the CLI is closed all variables are gone.❌&lt;/p&gt;

&lt;h2&gt;
  
  
  🌍 How to set env permanently
&lt;/h2&gt;

&lt;p&gt;There is a file called shell specific configuration file. It is set according to user default shell. For eg. if you are using BASH, you can declare the variables in the &lt;code&gt;~/.bashrc&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;📝 Open the file with vim, &lt;code&gt;vim .bashrc&lt;/code&gt; and then type the variables you want to add. Syntax for adding the variable is same as we have discussed above. And after adding 🔄 the variables to .bashrc file you need to refresh it by typing the command &lt;code&gt;source .bashrc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6ury1m3erv44d0xtpla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6ury1m3erv44d0xtpla.png" alt="Add env" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📚Resources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-set-an-environment-variable-in-linux/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/how-to-set-an-environment-variable-in-linux/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.digitalocean.com/glossary/environment-variable/" rel="noopener noreferrer"&gt;https://docs.digitalocean.com/glossary/environment-variable/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Setting environment variables in Linux is a powerful skill that can significantly enhance your development and system administration tasks. 💻 We discussed how to create, modify, and remove these variables 🚀.&lt;/p&gt;

&lt;p&gt;If you have any questions or tips to share about working with environment variables, please leave a comment below. 💬 Thank you for reading, and happy coding! 🌟&lt;/p&gt;

&lt;p&gt;You can check this on hasnode too.🥰 &lt;a href="https://prashantsdevlog.hashnode.dev/" rel="noopener noreferrer"&gt;https://prashantsdevlog.hashnode.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this week I'll learn networking skills in linux essential for a DEVOPS engineer. 🤗&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>BASH(Shell) Scripting 101</title>
      <dc:creator>Prashant Pal</dc:creator>
      <pubDate>Sun, 20 Oct 2024 17:41:29 +0000</pubDate>
      <link>https://dev.to/prashant_1111/bashshell-scripting-101-54b8</link>
      <guid>https://dev.to/prashant_1111/bashshell-scripting-101-54b8</guid>
      <description>&lt;h2&gt;
  
  
  Let's Start 🚀
&lt;/h2&gt;

&lt;p&gt;In this blog, I’ll be explain the basics of Bash scripting—a powerful tool for automating tasks and managing system operations. Well this is what I learned but I try my best to explain it here.📚&lt;/p&gt;

&lt;p&gt;When we write commands in a file, and we use that file to execute, thus making it moveable that file is called shell script. It has &lt;strong&gt;.sh&lt;/strong&gt; extension 📂.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages Of Shell Scripting🌟
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;You can avoid repetitive work.🔄&lt;/li&gt;
&lt;li&gt;You can keep history of configuration.📜&lt;/li&gt;
&lt;li&gt;Share the instructions.🤝&lt;/li&gt;
&lt;li&gt;You can handle logic and bulk operations.⚙️&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are different shell implementation:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;sh&lt;/strong&gt;:- Bourne Shell /bin/sh 🐚&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bash&lt;/strong&gt;:- Bourne again shell /bin/bash. Bash is a shell program. Bash is a programming language.💻&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90m2oe7mi58y5vzuu88n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90m2oe7mi58y5vzuu88n.png" alt="Shebang" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shebang line is used to tell which language you would use. You need to write it in your file in order to use it. Syntax to write shebang line :- &lt;code&gt;#!/bin/bash&lt;/code&gt; for eg. here I use bash.📜&lt;/p&gt;

&lt;p&gt;To run the file we use,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./filename.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But this will not execute because you have no permission to execute, and now we will use our permission knowledge to give permission to that file. I have mentioned in my previous blog how to give permission to a file take a reference from there. And don't forgot to use sudo.🔑&lt;/p&gt;

&lt;p&gt;Now make some variables. It is similarly to other programming languages. Here is the syntax:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;variable_name=value
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To use the variable type &lt;code&gt;$variable_name&lt;/code&gt;. To store the output of a command in a variable use &lt;code&gt;variable_name=$(command)&lt;/code&gt;.📦&lt;/p&gt;

&lt;h2&gt;
  
  
  Conditionals⚖️
&lt;/h2&gt;

&lt;p&gt;You all are familiar with conditional statements while learning programming language.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;if&lt;/strong&gt; :- Syntax for using &lt;code&gt;if [..built_in_commands..]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;else&lt;/strong&gt; :-  Syntax for using &lt;code&gt;else ....&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fas3rtsbmynhz488nhfy5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fas3rtsbmynhz488nhfy5.png" alt="if statement" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You see there is &lt;strong&gt;then&lt;/strong&gt; when you write condition in if statement next step is to set instructions for that we use &lt;strong&gt;then&lt;/strong&gt; then type something. After that we use &lt;strong&gt;else&lt;/strong&gt;. And at the last we use &lt;strong&gt;fi&lt;/strong&gt; to close the statement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operators⚙️
&lt;/h2&gt;

&lt;p&gt;In bash there are different types of operators:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Arithmetic Operators&lt;/strong&gt;:- Basic mathematics operators, similar to other programming languages (+,-,*,/ etc). I think its pretty basic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Relational Operators&lt;/strong&gt;:- These are used for comparisons. There are various types:-&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-eq Equal to
-ne Not equal to 
-lt Less than
-le Less than or equal to 
-gt Greater than
-ge Greater than or equal to
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;String Operators&lt;/strong&gt;:- These are for strings.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;= Equal
!= Not Equal 
-z String is null
-n String is not null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;File Test Operators&lt;/strong&gt;:- These are used to test various properties associated with a file.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-e Checks whether file exist or not 
-d Checks whether file is a directory
-f File is a regular file
-r Checks whether file is readable
-w Checks whether file is writable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are other operators too but I thinks these are the most common till now. &lt;/p&gt;

&lt;h2&gt;
  
  
  Passing Parameters📨
&lt;/h2&gt;

&lt;p&gt;Well in simple words, when you type something in CLI then it can be used inside the bash scripts. And to make this possible we use $ sign.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ sign&lt;/strong&gt;:- So this starts from 0 to 9 and uses special character too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$0 Basically used for naming
$1-$9 These are used to store the passed i/p at CLI
$@ Represent all the parameter passed to the script
$* Represent all the argument in a single string 
$# Represent total number of arguments provided
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are other advance method too, you can learn them but its better when you need to use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Loops🔄
&lt;/h2&gt;

&lt;p&gt;Similar to programming languages there are different types of loops. For example:- while, for, until, select.&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;For Loop&lt;/strong&gt;:- Syntax of for loop:-&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fivqwl9uejfwkqiqnm05u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fivqwl9uejfwkqiqnm05u.png" alt="For Loop" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg73iut41mnqrj53s87we.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg73iut41mnqrj53s87we.png" alt="For Loop O/p" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In syntax you notice do and done. Do indicates that execute the commands until the condition is satisfies, and done indicates that loop is over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:- For arithmetic operators use double brackets (()). And while creating your .sh file don't forgot to give your file necessary permissions.🔑&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;While Loop&lt;/strong&gt;:- Syntax of while loop:-&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqh6539y75ygn94ms0vsn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqh6539y75ygn94ms0vsn.png" alt="While loop" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The do and done have the exact same function as in for loop.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Until Loop&lt;/strong&gt;:- Opposite of while loop. Syntax of until loop:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;until [ condition ]; do
    # Commands to be executed
done

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.&lt;strong&gt;Select Loop&lt;/strong&gt;:- It creates a simple list from the given options. Syntax of select loop:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select var in list; do
    # Commands to be executed
done

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Functions
&lt;/h2&gt;

&lt;p&gt;We use functions in every programming languages, and here it is same work as in other languages. Better overview of codes, reuse code again, etc.&lt;/p&gt;

&lt;p&gt;Syntax of functions:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function name_function {
----logic----commands---
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name_function(){
---logic---commands---
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How to call a function, its simple type the function name for example:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;greet() {
    echo "Hello, $1!"
}

greet "Prashant"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the same example can be used to show how to pass the values to a function.&lt;/p&gt;

&lt;p&gt;To return the value in a function we use &lt;strong&gt;$?&lt;/strong&gt;, it holds the return value of the function or last executed command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources📚
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Refer to this site to deepen your knowledge in bash. But as I say always don't learn whole at one go, learn as you grow/move.🌱&lt;a href="https://www.javatpoint.com/bash-introduction" rel="noopener noreferrer"&gt;https://www.javatpoint.com/bash-introduction&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For revision &lt;a href="https://www.youtube.com/watch?v=I4EWvMFj37g" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=I4EWvMFj37g&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can refer for more topics like AWK Arrays SED etc &lt;a href="https://www.youtube.com/watch?v=tK9Oc6AEnR4" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=tK9Oc6AEnR4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note:- AWK is important just watch it.👀 I have seen some interviews where interviewer asks about AWK command. So just watch it. It is easy topic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I've Learned About Bash: A Beginner's Perspective🌟
&lt;/h2&gt;

&lt;p&gt;Learning the basics of Bash scripting has been an exciting journey, and I hope this blog helps you on your own path. While there's always more to discover, mastering these fundamentals is a great start. 🚀 &lt;/p&gt;

&lt;p&gt;In my next blog, I’ll explore environment variables, how to create them, networking concepts, and SSH.🌐&lt;/p&gt;

&lt;p&gt;Feel free to share your thoughts or questions in the comments—I’d love to hear about your experience!💬&lt;/p&gt;

&lt;p&gt;This blog is also on hashnode, you can check it out.&lt;br&gt;
&lt;a href="https://prashantsdevlog.hashnode.dev/" rel="noopener noreferrer"&gt;https://prashantsdevlog.hashnode.dev/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Manage Permissions In Linux 🔐</title>
      <dc:creator>Prashant Pal</dc:creator>
      <pubDate>Mon, 14 Oct 2024 12:25:10 +0000</pubDate>
      <link>https://dev.to/prashant_1111/manage-permissions-in-linux-3dib</link>
      <guid>https://dev.to/prashant_1111/manage-permissions-in-linux-3dib</guid>
      <description>&lt;p&gt;This week, I explored🔭 two essential aspects of working with Linux: managing permissions 🔐 and getting comfortable with the Vim editor ✍️. Both are crucial for anyone working in a Linux environment. Let’s break down what I’ve learned 😇.&lt;/p&gt;

&lt;h2&gt;
  
  
  VI &amp;amp; VIM Editor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcb09epwsmqgwmiayegq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcb09epwsmqgwmiayegq.png" alt="VIM Editor" width="800" height="394"&gt;&lt;/a&gt;&lt;br&gt;
VIM is a built in editor in Linux. Well we have VS Code and editor to edit or create file, why we use VIM.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For small modifications🔧 it is faster especially when working in CLI.&lt;/li&gt;
&lt;li&gt;Faster to create and edit at the same time⏰. &lt;/li&gt;
&lt;li&gt;It Support Multiples formats&lt;/li&gt;
&lt;li&gt;While working on remote servers it is very useful.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To open file with VIM write this command in CLI&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vim &amp;lt;file_name&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;VIM have two modes📕 Command Mode and Insert Mode:&lt;br&gt;
&lt;strong&gt;Command Mode&lt;/strong&gt; :- This is the default mode. In this you can't edit the text. But you can navigate, search, delete, undo etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insert Mode&lt;/strong&gt; :- This mode allows you to enter text, edit text etc.&lt;br&gt;
To switch to insert mode press &lt;strong&gt;i&lt;/strong&gt; key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3es53fvzj2kvzxwco4uc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3es53fvzj2kvzxwco4uc.png" alt="Insert Mode" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After adding some text you need to save and exit the editor, for that simply press &lt;strong&gt;esc&lt;/strong&gt; key. Then type :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:wq!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ibzew8qhbzag39b5cez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ibzew8qhbzag39b5cez.png" alt="Save and Exit" width="800" height="422"&gt;&lt;/a&gt;&lt;br&gt;
This command writes the file to disk and quit vim editor.&lt;br&gt;
To quit vim without saving the changes then type :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:q!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In a file to remove whole line you can use command &lt;code&gt;dd&lt;/code&gt; this delete entire line. To delete🗑️ multiple line then use type &lt;code&gt;d20&lt;/code&gt; here 20 means number of lines, you can just count the lines from where you want to delete. For Undo type &lt;strong&gt;u&lt;/strong&gt;. To jump to a specific line use command &lt;code&gt;16G&lt;/code&gt; here 16 is line number. To search use &lt;code&gt;/pattern&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:- When I say command then it should be written in command mode only. Commands don't work in Insert Mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  NANO Editor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkqsz249q8rnvpsrqs9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkqsz249q8rnvpsrqs9l.png" alt="Nano" width="800" height="396"&gt;&lt;/a&gt;&lt;br&gt;
Nano is more user friendly than vim. To make file or to open file use command :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nano filename
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This opens nano editor. You can see various commands at the end of the editor use these to navigate through it. I recommend to use all commands and try out every one. &lt;/p&gt;

&lt;h2&gt;
  
  
  Managing Permissions 🔒
&lt;/h2&gt;

&lt;p&gt;In a linux system there are 3 user👤 categories:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Superuser Account&lt;/strong&gt;🦹🏻‍♀️:- In this root user have unrestricted permissions. For administrative tasks you need to login as root user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regular User Account&lt;/strong&gt;🙋🏻‍♂️:- A user we create to login into the system. For eg. /home/pal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service user&lt;/strong&gt;🚹:- It is relevant for Linux Server Distributions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How To Manage permissions? There are two levels first &lt;strong&gt;User Level&lt;/strong&gt; and second is &lt;strong&gt;Group Level&lt;/strong&gt;. In User Level we give permissions to user directly. In Group Level we group users into linux groups and then give permission to that group.&lt;/p&gt;

&lt;p&gt;All users information is stored🏪 in &lt;strong&gt;/etc/passwd&lt;/strong&gt;. This stores user account information. Everyone can read it, but only root user can change the file. After running🏃🏻 this command you will get information of the user,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pal:x:1000:1000:pal,,,:/home/pal:/bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above line represent this:- &lt;strong&gt;USERNAME:PASSWORD:UID:GID:GECOS:HOMEDIR:SHELL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create new user, use command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo adduser&amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It automatically chooses UID and GID values and creates a home directory for new user. After running this command enter new password and other details.&lt;/p&gt;

&lt;p&gt;To change the password of user&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo passwd&amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To login to this username use &lt;strong&gt;su-&lt;/strong&gt;. &lt;br&gt;
To add group use this command:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo groupadd&amp;lt;groupname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, the system assigns the next available GID 🔢.&lt;/p&gt;

&lt;p&gt;You noticed that we can write the command adduser as useradd, so what is the difference between adduser and useradd, and similarly groupadd and addgroup? 🤔&lt;/p&gt;

&lt;p&gt;adduser &amp;amp; addgroup ➡️ These are more interactive 💬, more user-friendly 😊. It is easier to use and automatically chooses UID and GID values itself. Use these commands when you are executing manually 🖱️.&lt;/p&gt;

&lt;p&gt;useradd &amp;amp; groupadd ➡️ In these commands, you need to provide the information yourself 🛠️. These commands are used when executing in an automated way 🤖.&lt;/p&gt;

&lt;p&gt;To change a user's group to another group, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo usermod[Options]&amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are various tags use linux man page to access all tags related to usermod command or you can use google to search it.&lt;/p&gt;

&lt;p&gt;To delete group use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo delgroup &amp;lt;groupname&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ownership And Permissions 👤🔑
&lt;/h2&gt;

&lt;p&gt;In simple words ownership means who owns the file or who have access to that file. Owner is the user, who created the file, and owning group is the primary group of that use. To change the ownership use command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown &amp;lt;username&amp;gt;:&amp;lt;groupname&amp;gt; &amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To understand it better lets use this command &lt;code&gt;ls -l&lt;/code&gt;. This shows long view of the directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkit6n7blocfdlcrhper5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkit6n7blocfdlcrhper5.png" alt="Terminal" width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll take &lt;code&gt;drwxrwxr-x 2 pal pal&lt;/code&gt; as a example your terminal should have this type of oputput.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;d :- This is the file type. There are are different file types. "-" is for regular file, "d" is for directory, "c" is for character device file, "l" symbolic link, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;rwx :-First group of rwx is for owner. This indicates owner have access to this file, "r" stands for read, "w" stands for write, "x" stands for execute, "-" stands no permission.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;rwx :- Second group of rwx is for group owner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;r-x :- This is for all other users, who are not the file owner or don't belong to the group owner.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; - If "-" is used in place of rwx it means anyone is missing, don't have permission. For example r-x in this w is missing and instead of w, "-" is used this means it don't have permission for write.&lt;/p&gt;

&lt;p&gt;To remove permission use, here - stands for removing the permission and g stands for group.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod g-w &amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To add permission use, here + stands for adding the permission. For user use u instead of g.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod g+x &amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note 📝: You can use the absolute numeric method to give permission. You can search it on Google 🔍. For each number, there is a permission assigned, for example, 7 is for rwx.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources 📚
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If you want to access the Linux terminal online, use this website: &lt;a href="https://bellard.org/jslinux/" rel="noopener noreferrer"&gt;https://bellard.org/jslinux/&lt;/a&gt; 🌐&lt;/li&gt;
&lt;li&gt;Use ChatGPT 😉 to explore more. 🤖&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Wrapping Up And Getting Ready for Another Learning Adventure 🌟
&lt;/h2&gt;

&lt;p&gt;Last week, I took a deep dive into managing permissions in Linux 🔐, mastering the Vim editor ✍️, and learning about access controls 🛡️. Each of these topics has given me a strong foundation in how Linux handles file security and text editing. I know this will be helpful when I set up my remote VM for my DevOps projects 💻.&lt;/p&gt;

&lt;p&gt;In this week, I’m excited to explore shell scripting 🐚 and networking in Linux 🌐! Shell scripting will open up new possibilities for automating tasks 🔄 and making my workflow more efficient, while understanding Linux networking will give me the knowledge to configure and troubleshoot connections in various environments 🛠️.&lt;/p&gt;

&lt;p&gt;Stay tuned for more Linux and open-source adventures next week! 🚀&lt;/p&gt;

&lt;p&gt;You can check my blog on hashnode too.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>ubuntu</category>
      <category>learning</category>
    </item>
    <item>
      <title>My First Week With Linux</title>
      <dc:creator>Prashant Pal</dc:creator>
      <pubDate>Mon, 07 Oct 2024 17:41:07 +0000</pubDate>
      <link>https://dev.to/prashant_1111/my-first-week-with-linux-50ma</link>
      <guid>https://dev.to/prashant_1111/my-first-week-with-linux-50ma</guid>
      <description>&lt;p&gt;I started learning📖📖 Linux last week. It's been exciting🤗 and a bit overwhelming as I've explored file systems, the terminal, and basic commands. Here's what I've learned so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linux File System
&lt;/h2&gt;

&lt;p&gt;Linux have hierarchical tree🌲 structure. There is one root folder and in that folder there are other different folders. Each folder contains different files. Here is the list of folders:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;/home&lt;/strong&gt;:- This folder contains home🏡 directories of all non root users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/bin&lt;/strong&gt;:- Binaries, contains executables for most common user commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/sbin&lt;/strong&gt;:- System Binaries, contains system relevant files/programs that admin use (super use privilege).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/lib&lt;/strong&gt;:- Library📚, contains essential shared libraries that files/programs from /bin and /sbin use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/usr&lt;/strong&gt;:- User👤, this is used for user home directories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/opt&lt;/strong&gt;:- Optional, contains 3rd party programs you install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/boot&lt;/strong&gt;:- Booting, contains files required for booting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/etc&lt;/strong&gt;:- Etcetra, contains configuration for system apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/dev&lt;/strong&gt;:- Devices, location for device files like webcam, keyboard, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/var&lt;/strong&gt;:- Variable, contains files to which the system writes data during the course of its operation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/temp&lt;/strong&gt;:- Temporary, contains temporary resources required for some process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/media&lt;/strong&gt;:- Removable media.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/mnt&lt;/strong&gt;:- Mount, temporary mount points.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note:- "&lt;strong&gt;.&lt;/strong&gt;" is used for hidden files and folders.&lt;/p&gt;

&lt;p&gt;I'm not saying that I learn these, its for just understanding like whats inside that folder. This is only for reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linux Terminal And Basic Commands
&lt;/h2&gt;

&lt;p&gt;When I opened the terminal it shows "&lt;strong&gt;&lt;u&gt;pal@pal-ubuntu:~$&lt;/u&gt;&lt;/strong&gt;" so I searched about it and here's what i learned. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;pal&lt;/strong&gt;:- First is username. It shows your username in my case its pal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pal-ubuntu&lt;/strong&gt;:- Second is computer name. It shows your computer name in my case its pal-ubuntu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;:&lt;/strong&gt;:- It is separator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$&lt;/strong&gt;:- It represent regular user, &lt;strong&gt;#&lt;/strong&gt; is used for root user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For basic commands I make sure to learn📕 those only which are mostly used. It's better to type commands in terminal on your own and experiment it. Don't learn all commands at once because it makes no sense. Learn as you go😇.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;pwd&lt;/strong&gt;:- Print working directory. It shows current directory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ls&lt;/strong&gt;:- List. It shows the list of files inside a directory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cd&lt;/strong&gt;:- Change directory. It helps in navigating from one directory to another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mkdir&lt;/strong&gt;:- Make directory. Make folder. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;touch&lt;/strong&gt;:- Create files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rm&lt;/strong&gt;:- Removes files/folders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;clear&lt;/strong&gt;:- Clears the terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mv&lt;/strong&gt;:- Move flies or used to rename it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cp&lt;/strong&gt;:- Copy files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cat&lt;/strong&gt;: Displays the file content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sudo&lt;/strong&gt;:- Allows regular users to run programs with the security privileges of the super use or root.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note:- There are different tags with some commands for eg. ls,rm,mv,etc. I learn them simply by searching it on google and take help from ChatGpt. I suggest experiment those commands with all tags to get better understanding of how command works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now Time To Install Apps
&lt;/h2&gt;

&lt;p&gt;After having some terminal knowledge I want to install apps for my new os because its too empty😅. In linux there are different types of package manager, for ubuntu by default there is apt(Advanced Package Tool).  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;sudo apt search&lt;/strong&gt;:- To search the existing package.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sudo apt update&lt;/strong&gt;:- To update the package.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sudo apt install&lt;/strong&gt;:- To install the package.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sudo apt remove&lt;/strong&gt;:- To uninstall the package.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note:- For limited view on screen while installing the package you can add &lt;strong&gt;get&lt;/strong&gt; eg. sudo apt-get install this will show limited view. But apt is more user friendly.&lt;/p&gt;

&lt;p&gt;Well there is more, you can install packages by different ways. First one I have discussed above, second is by using default store in Ubuntu, and the third one is snap. Snap is a bundle of app and its dependencies. Snap store provides a place to upload snap.&lt;/p&gt;

&lt;p&gt;Important thing is snap takes more space on disk and its third party which means you should be careful while using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Here is some articles which I read -&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.freecodecamp.org/news/the-linux-commands-handbook/#heading-the-linux-man-command" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/the-linux-commands-handbook/#heading-the-linux-man-command&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.freecodecamp.org/news/sudo-apt-get-update-vs-upgrade-what-is-the-difference/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/sudo-apt-get-update-vs-upgrade-what-is-the-difference/&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://labex.io/courses/linux-basic-commands-practice-online" rel="noopener noreferrer"&gt;https://labex.io/courses/linux-basic-commands-practice-online&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can search videos on youtube but I think reading helps you a lot, but it takes time.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Continues.....
&lt;/h2&gt;

&lt;p&gt;After one week of learning Linux, I feel much more comfortable😌 with the terminal, file systems, and package management. While I still have a long way to go📈, this foundational knowledge is making Linux feel less intimidating every day.&lt;/p&gt;

&lt;p&gt;In the coming week, I plan to dive🤿 deeper into shell scripting and understanding permissions in Linux. I’m excited to see how these building blocks will help me automate tasks and manage my system more efficiently.&lt;/p&gt;

&lt;p&gt;Well I want to start my Devops journey and I think this is the starting point of it. I can't give too much time to learn linux, but I can learn it more deeper while doing real projects and challenges that will I face.&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>devops</category>
      <category>devjournal</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
