<?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: Ankur Singh</title>
    <description>The latest articles on DEV Community by Ankur Singh (@ankur0904).</description>
    <link>https://dev.to/ankur0904</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%2F945575%2Fe5796c60-021e-43b4-af88-ab00008e156b.jpg</url>
      <title>DEV Community: Ankur Singh</title>
      <link>https://dev.to/ankur0904</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ankur0904"/>
    <language>en</language>
    <item>
      <title>I Tired of Trying to Read API Responses, So We Built This Free Tool</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sun, 08 Feb 2026 07:16:06 +0000</pubDate>
      <link>https://dev.to/ankur0904/i-tired-of-trying-to-read-api-responses-so-we-built-this-free-tool-3alp</link>
      <guid>https://dev.to/ankur0904/i-tired-of-trying-to-read-api-responses-so-we-built-this-free-tool-3alp</guid>
      <description>&lt;h2&gt;
  
  
  The Struggle is Real 😫
&lt;/h2&gt;

&lt;p&gt;If you are a frontend, backend, or data engineer, you know this pain:&lt;/p&gt;

&lt;p&gt;You get a massive API response. It’s 2MB of minified text. You paste it into an online formatter, but you still can't find that &lt;em&gt;one&lt;/em&gt; specific ID. Or worse, you need to access a nested property like &lt;code&gt;data.users[4].attributes.marketing.status&lt;/code&gt;, and you have to manually type out that path in your IDE, hoping you didn't make a typo.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;console.log(JSON.stringify(data, null, 2))&lt;/code&gt; only gets you so far before your terminal explodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, We Built a Solution 🛠️
&lt;/h2&gt;

&lt;p&gt;My team and I decided to fix this workflow. We built &lt;strong&gt;&lt;a href="https://www.bigjson.online" rel="noopener noreferrer"&gt;bigjson.online&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is a free, web-based tool designed specifically for handling large JSON files, debugging API responses, and making data readable.&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%2Fpcj3c7p0dr0ejjrrdk0b.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%2Fpcj3c7p0dr0ejjrrdk0b.png" alt="web-app-image" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Killer Features 🚀
&lt;/h2&gt;

&lt;p&gt;Here is why this is better than just pasting into a text editor:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Tree View &amp;amp; Search 🔍
&lt;/h3&gt;

&lt;p&gt;As you can see in the screenshot above, we parse your JSON into an interactive Tree. But the real magic is the &lt;strong&gt;Search&lt;/strong&gt;. You don't just "Find" text. We built specific filters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Search by Key:&lt;/strong&gt; Find specific field names (e.g., &lt;code&gt;questionId&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Search by Value:&lt;/strong&gt; Find specific data points (e.g., that missing value &lt;code&gt;5&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Context:&lt;/strong&gt; It highlights exactly where the data lives in the hierarchy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. "Copy Path" (My Favorite Feature) 📋
&lt;/h3&gt;

&lt;p&gt;This was the main reason we built it. When you drill down into a nested object in the Tree View, you can simply click to &lt;strong&gt;copy the path&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of manually typing:&lt;br&gt;
&lt;code&gt;response.data.results[0].deeply.nested.value&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You just click the value in bigjson.online, paste it into VS Code, and you're done. It saves so many "undefined is not a function" errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Compare Mode ⚖️
&lt;/h3&gt;

&lt;p&gt;Debugging a breaking behavior? Paste the "Old" JSON response and the "New" one side-by-side. We highlight exactly what changed so you don't have to play "spot the difference" by eye.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out!
&lt;/h2&gt;

&lt;p&gt;It is live right now. It handles massive files, it's free, and frankly, I think the Dark Mode looks pretty slick.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.bigjson.online" rel="noopener noreferrer"&gt;https://www.bigjson.online&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  We Want Your Feedback!
&lt;/h2&gt;

&lt;p&gt;This is our first major release and engagement has been awesome so far. But we built this &lt;em&gt;for&lt;/em&gt; devs, so we need &lt;em&gt;devs&lt;/em&gt; to tell us how to make it better.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Does it handle your massive 10MB logs?&lt;/li&gt;
&lt;li&gt;  Is the search fast enough?&lt;/li&gt;
&lt;li&gt;  What feature is missing?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know in the comments below! 👇&lt;/p&gt;

&lt;p&gt;Happy Debugging! 💻&lt;br&gt;
Contact me: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>product</category>
      <category>programming</category>
    </item>
    <item>
      <title>Angular with Injectable Services</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sun, 03 Aug 2025 16:23:26 +0000</pubDate>
      <link>https://dev.to/ankur0904/angular-with-injectable-services-4dnn</link>
      <guid>https://dev.to/ankur0904/angular-with-injectable-services-4dnn</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den" class="crayons-story__hidden-navigation-link"&gt;Angular Injectable Services: Hogwarts Sorting Hat&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ankur0904" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F945575%2Fe5796c60-021e-43b4-af88-ab00008e156b.jpg" alt="ankur0904 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ankur0904" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ankur Singh
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ankur Singh
                
              
              &lt;div id="story-author-preview-content-2749356" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ankur0904" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F945575%2Fe5796c60-021e-43b4-af88-ab00008e156b.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ankur Singh&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 3 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den" id="article-link-2749356"&gt;
          Angular Injectable Services: Hogwarts Sorting Hat
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/angular"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;angular&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/web"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;web&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/typescript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;typescript&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>angular</category>
      <category>beginners</category>
      <category>web</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Angular Injectable Services: Hogwarts Sorting Hat</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sun, 03 Aug 2025 13:27:42 +0000</pubDate>
      <link>https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den</link>
      <guid>https://dev.to/ankur0904/angular-injectable-services-hogwarts-sorting-hat-2den</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. In this blog, we will be learning how the &lt;strong&gt;Angular DI(Dependency Injection)&lt;/strong&gt; works by creating the &lt;strong&gt;Injectable Services&lt;/strong&gt; and using them inside our components throughout the application. We'll be creating the popular &lt;a href="https://youtu.be/z4K2F_OALPQ?si=s9jdrPGcL1zX-pB_" rel="noopener noreferrer"&gt;Hogwarts Sorting Hat&lt;/a&gt; using the DI(Dependency Injection). &lt;/p&gt;

&lt;p&gt;Are you ready? If yes, write &lt;em&gt;gryffindor&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Angular Component
&lt;/h2&gt;

&lt;p&gt;Angular Components are responsible for the view that is shown to the user interface. The component task is to take care of User Experience and nothing more. &lt;/p&gt;

&lt;p&gt;In simple terms, if you are visiting a web application, two things are happening underneath the hood: you are seeing what you need to see, &lt;strong&gt;the UI&lt;/strong&gt;, and the web app is doing the business part, fetching the data from the server, cleaning it, formatting it, sometimes some calculation and so on. &lt;/p&gt;

&lt;p&gt;So our components are responsible for showing the User Interface(data) to the user, and our Services are responsible for doing the other part I mentioned above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Angular Dependency Injection(DI)
&lt;/h2&gt;

&lt;p&gt;In Angular, the DI system comprises the dependency consumer, dependency provider &amp;amp; &lt;code&gt;Injector&lt;/code&gt;. We didn't need to delve too deeply into the concepts of dependency consumer and provider. &lt;/p&gt;

&lt;p&gt;All we need to know about dependency can be visualised as something we rely on [ like Harry Potter relies on their &lt;a href="https://www.youtube.com/watch?v=gRqY1nxGGE4" rel="noopener noreferrer"&gt;wand&lt;/a&gt; to cast the spell ]. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependency consumer&lt;/strong&gt; is who is requesting the dependency(data, function, property), &lt;strong&gt;Dependency Provider&lt;/strong&gt; is who is providing these things and &lt;code&gt;Injector&lt;/code&gt; helps to facilitate the interaction between dependency consumers and dependency providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's code it
&lt;/h2&gt;

&lt;p&gt;1 First, make a new Angular Project&lt;/p&gt;

&lt;p&gt;Run this script make sure you have &lt;a href="https://www.npmjs.com/package/@angular/cli" rel="noopener noreferrer"&gt;Angular CLI&lt;/a&gt; installed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;ng&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;learn&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;services&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 Then make the server run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;learn&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;services$&lt;/span&gt; &lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;start&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3 Configure the project&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to app.html file remove everything expect this line &lt;code&gt;&amp;lt;router-outlet /&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new component&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;learn&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;services$&lt;/span&gt; &lt;span class="nx"&gt;ng&lt;/span&gt; &lt;span class="nx"&gt;generate&lt;/span&gt; &lt;span class="nx"&gt;component&lt;/span&gt; &lt;span class="nx"&gt;components&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new service&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;learn&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;services$&lt;/span&gt; &lt;span class="nx"&gt;ng&lt;/span&gt; &lt;span class="nx"&gt;generate&lt;/span&gt; &lt;span class="nx"&gt;service&lt;/span&gt; &lt;span class="nx"&gt;services&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;sorting&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;hat&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4 Let's write some HTML Code in &lt;code&gt;components/main-page.html&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sorting-hat-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;🧙‍♂️ Hogwarts Sorting Hat&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Enter your name to discover your Hogwarts House!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;[(ngModel)]=&lt;/span&gt;&lt;span class="s"&gt;"userName"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Type your name..."&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"name-input"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;(click)=&lt;/span&gt;&lt;span class="s"&gt;"sorting_hat(userName)"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sort-btn"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Sort Me!&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  @if(houseName){
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"result"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h3&amp;gt;&lt;/span&gt;Congratulations, {{userName}}!&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;You belong to &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"house"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{houseName}}&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  }
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the CSS in &lt;code&gt;components/main-page.css&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.sorting-hat-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;400px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f8f4e3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.12&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Segoe UI'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;'Arial'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.name-input&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#bfa76f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.sort-btn&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#7f5a36&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;background&lt;/span&gt; &lt;span class="m"&gt;0.2s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.sort-btn&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#a67c52&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.result&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fffbe6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#bfa76f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.house&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#7f5a36&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.2em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5 Now time to create the service and &lt;strong&gt;inject&lt;/strong&gt; it inside our component&lt;/p&gt;

&lt;p&gt;Open &lt;code&gt;services/sorting-hat.ts&lt;/code&gt; and paste this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Injectable&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Injectable&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;providedIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;root&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SortingHat&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;houses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Gryffindor&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hufflepuff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ravenclaw&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Slytherin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="nf"&gt;sorting_hat&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;houses&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;It's basically a function which helps in sorting the students.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;6 Inject services into the component&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It's very easy, this one line is at all.&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sortingFunction = inject(SortingHat);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;7 Here is the full code of the main-page.ts file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;inject&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SortingHat&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../services/sorting-hat&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FormsModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/forms&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-main-page&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;FormsModule&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./main-page.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;styleUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./main-page.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainPage&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;userName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;houseName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nx"&gt;sortingFunction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;inject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;SortingHat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;sorting_hat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;houseName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sortingFunction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sorting_hat&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Time to refresh the page
&lt;/h3&gt;

&lt;p&gt;Nothing happens ;) Because we have not bound our main HTML file &lt;em&gt;app.html&lt;/em&gt; yet. &lt;/p&gt;

&lt;p&gt;Go to &lt;code&gt;app.ts&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MainPage&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./components/main-page/main-page&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
  &lt;span class="nx"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterOutlet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;MainPage&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Go to &lt;code&gt;app.html&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;app-main-page&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;router-outlet&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Time to refresh the page again.&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%2Flu6szfuqhwdv7rkp1x4q.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%2Flu6szfuqhwdv7rkp1x4q.png" alt="Working web application" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  You nailed it
&lt;/h2&gt;

&lt;p&gt;You have learned how to create your injectable services and inject with in different components and reuse it. I have share the code &lt;a href="https://github.com/ankur0904/angular-injectable-services" rel="noopener noreferrer"&gt;repository&lt;/a&gt; here for your reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://angular.dev/guide/di/creating-injectable-service" rel="noopener noreferrer"&gt;https://angular.dev/guide/di/creating-injectable-service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📧 Email: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
🔗 LinkedIn: &lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;Ankur Singh&lt;/a&gt;&lt;br&gt;
🔗Twitter: &lt;a href="https://twitter.com/ankur_136" rel="noopener noreferrer"&gt;@ankur_136&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect and create something great together!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>beginners</category>
      <category>web</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Linux Insight Blogs: rsync</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sun, 06 Jul 2025 11:11:02 +0000</pubDate>
      <link>https://dev.to/ankur0904/linux-insight-blogs-rsync-55nd</link>
      <guid>https://dev.to/ankur0904/linux-insight-blogs-rsync-55nd</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. In this blog, we will learn about the &lt;code&gt;rsync&lt;/code&gt; command-line utility on Unix/Linux systems. A command-line utility is a program or tool that you run using the CLI(Command Line Interface) instead of the GUI(Graphical User Interface)&lt;/p&gt;

&lt;h2&gt;
  
  
  rsync
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;rsync&lt;/strong&gt; stands for &lt;strong&gt;remote sync&lt;/strong&gt;. It is a fast and extraordinarily file-copying tool. It is capable of file transferring from a local host to any remote host. Rsync is most popular for its &lt;strong&gt;delta-transfer algorithm&lt;/strong&gt;, which allows only to send data by sending only the differences between the source files and the existing files in the destination. Rsync finds files that need to be transferred using a &lt;strong&gt;lqquick checkrq algorithm&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's get our hands dirty with code
&lt;/h2&gt;

&lt;p&gt;I have two folder directories with the name &lt;em&gt;local&lt;/em&gt; and &lt;em&gt;remote&lt;/em&gt;. I am treating &lt;em&gt;local&lt;/em&gt; as the file system in my local computer and the &lt;em&gt;remote&lt;/em&gt; as the server file system to transfer the data. Don't worry you can do the same for the server as well only a small syntax will change nothing else.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;local$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt;
&lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file5&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;

&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;remote$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;  &lt;span class="p"&gt;..&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-r&lt;/strong&gt; flag (recursive mode)
This enables you to recurse into directories.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop$ rsync -r local/&lt;/span&gt; &lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;remote$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt;
&lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file5&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Mind the "/" after the local other wise, you output be like remote/local/file{1..5}.txt&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-a&lt;/strong&gt; flag (archive mode)
This enables you to recurse and want to preserve almost everything(symbolic links, special and device files, modification times, groups, owners, and permissions)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop$ rsync -a local/&lt;/span&gt; &lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-P&lt;/strong&gt; flag (partial mode)
By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. The &lt;strong&gt;-P&lt;/strong&gt; flag will help us to achieve this.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop$ rsync -aP local/&lt;/span&gt; &lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;span class="nx"&gt;sending&lt;/span&gt; &lt;span class="nx"&gt;incremental&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-h&lt;/strong&gt; flag (human readdable mode)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop$ rsync -aPh local/&lt;/span&gt; &lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;span class="nx"&gt;sending&lt;/span&gt; &lt;span class="nx"&gt;incremental&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;--delete&lt;/strong&gt; flag&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To keep the directories truly in sync file must be deleted from the destination directory as well if they are deleted from the source as rsync by default doesn't do it automatically but you can always overwrite this. Using &lt;strong&gt;--delete&lt;/strong&gt; flag, we can achieve the same.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop$ rsync -aPh --delete local/&lt;/span&gt; &lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;span class="nx"&gt;sending&lt;/span&gt; &lt;span class="nx"&gt;incremental&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt;
&lt;span class="nx"&gt;deleting&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-v&lt;/strong&gt; flag
increase verbosity in the output of the command.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop$ rsync -aPhv --delete local/&lt;/span&gt; &lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;span class="nx"&gt;sending&lt;/span&gt; &lt;span class="nx"&gt;incremental&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
              &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;    &lt;span class="mf"&gt;0.00&lt;/span&gt;&lt;span class="nx"&gt;kB&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;    &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xfr&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;chk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;sent&lt;/span&gt; &lt;span class="mi"&gt;197&lt;/span&gt; &lt;span class="nx"&gt;bytes&lt;/span&gt;  &lt;span class="nx"&gt;received&lt;/span&gt; &lt;span class="mi"&gt;38&lt;/span&gt; &lt;span class="nx"&gt;bytes&lt;/span&gt;  &lt;span class="mf"&gt;470.00&lt;/span&gt; &lt;span class="nx"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;sec&lt;/span&gt;
&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;speedup&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="mf"&gt;0.00&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are at least hundreds of flags you can use according to your needs. You are always welcome to check out the different commands from the &lt;a href="https://linux.die.net/man/1/rsync" rel="noopener noreferrer"&gt;man&lt;/a&gt; page.&lt;/p&gt;

&lt;h2&gt;
  
  
  For connecting server using SSH
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;rsync&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;avz&lt;/span&gt; &lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;remote&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;destination&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🎉 You nailed it
&lt;/h2&gt;

&lt;p&gt;You’ve now learned how to use the rsync command for syncing your remote server with your local directory. It’s time to open your terminal and try these commands on your own system. Play around, explore, and see what's happening under the hood of your machine. &lt;strong&gt;Got something cool or unexpected? Share it...&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linux.die.net/man/1/rsync" rel="noopener noreferrer"&gt;https://linux.die.net/man/1/rsync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's connect&lt;br&gt;
📧 Email: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
🔗 LinkedIn: &lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;Ankur Singh&lt;/a&gt;&lt;br&gt;
🔗 Twitter: &lt;a href="https://twitter.com/ankur_136" rel="noopener noreferrer"&gt;@ankur_136&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>productivity</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Linux Insight Blogs: chmod</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sat, 28 Jun 2025 18:22:02 +0000</pubDate>
      <link>https://dev.to/ankur0904/linux-insight-blogs-chmod-dfb</link>
      <guid>https://dev.to/ankur0904/linux-insight-blogs-chmod-dfb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. In this blog we will gonna be learning about the &lt;code&gt;chmod&lt;/code&gt; a command-line utility on Unix/Linux systems. A command-line utility is a program or tool that you run using CLI(Command Line Interface) instead of GUI(graphical user interface)&lt;/p&gt;

&lt;h2&gt;
  
  
  chmod
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;chmod&lt;/code&gt; stands for change mode. It's a command-line utility which used to change the permissions of files and directories. In Unix/Linux or in general computer Science we can define permission following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;read(r), view file content&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;write(w), modify file content&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;execute(x), run as a program&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the help of this command, we can change the permissions of the files assigned to three user groups.&lt;/p&gt;

&lt;p&gt;In Unix/Linux systems we have three user classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Owner(u), user who owns a file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;group(g), users in the file group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;other(o), other users&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's get our hands dirty with code
&lt;/h2&gt;

&lt;p&gt;Open your terminal by pressing &lt;strong&gt;CTRL + Alt + T&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;We have 2 ways to use this commands&lt;/em&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  1. With symbols
&lt;/h3&gt;

&lt;p&gt;In this we will be using these symbols &lt;code&gt;+&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt; and &lt;code&gt;=&lt;/code&gt; symbols to modify the permissions. The meaning of the symbols &lt;code&gt;+&lt;/code&gt; (Add permission), &lt;code&gt;-&lt;/code&gt; (Remove permission) and &lt;code&gt;=&lt;/code&gt; (set exact permissioin). &lt;/p&gt;

&lt;p&gt;Let's start typing the command in the terminal:&lt;/p&gt;

&lt;p&gt;I have created a three files in the &lt;code&gt;blog&lt;/code&gt; folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt;
&lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;  &lt;span class="nx"&gt;file3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's check the permission of all the files by executing the &lt;code&gt;ls&lt;/code&gt; commands with &lt;code&gt;-l&lt;/code&gt; flag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;
&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-rw-rw-r--&lt;/code&gt; part, which represents file permissions in Linux. This string has 10 characters, structured like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Type][Owner][Group][Others]
 -     rw-     rw-    r-- 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Give execute permission to the owner
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;chmod&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt; 
&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;
&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rwxrw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can see the &lt;em&gt;x&lt;/em&gt; in the owner string, which means it has execute privilege.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removing execute permission from the owner
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;chmod&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt; 
&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;
&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can see the &lt;em&gt;x&lt;/em&gt; vanishes in the owner string.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set exact permission explicitily
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;chmod&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;rwx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;o&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;wr&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt; 
&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;
&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rwxr&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;rw&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see the string is changed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. With Numbers
&lt;/h3&gt;

&lt;p&gt;Each permission is mapped to a numeric value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;r &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;read&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;span class="nf"&gt;w &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;write&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="nf"&gt;x &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, everything worked the same expect in this method we passed the 3 string &lt;strong&gt;1st one for owner, 2nd one for group and the 3rd one for others&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;for example&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;chmod&lt;/span&gt; &lt;span class="mi"&gt;755&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt; 
&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;/Desktop/&lt;/span&gt;&lt;span class="nx"&gt;blog$&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;
&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;rwxr&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;xr&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nx"&gt;Jun&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="nx"&gt;file1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;755&lt;/span&gt; &lt;span class="nx"&gt;will&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nx"&gt;breaked&lt;/span&gt; &lt;span class="nf"&gt;into&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rwx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can visit &lt;a href="https://chmod-calculator.com/" rel="noopener noreferrer"&gt;link&lt;/a&gt; to see the mapping of permission with the numeric.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 You nailed it
&lt;/h2&gt;

&lt;p&gt;You’ve now learned how to use the chmod command to change the permission of the files with two methods symbolic and numerical. It’s time to open your terminal and try these commands on your own system. Play around, explore, and see what's happening under the hood of your machine. &lt;strong&gt;Got something cool or unexpected? Share your best use case of chmod commands in the comment section.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's connect&lt;br&gt;
📧 Email: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
🔗 LinkedIn: &lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;Ankur Singh&lt;/a&gt;&lt;br&gt;
🔗 Twitter: &lt;a href="https://twitter.com/ankur_136" rel="noopener noreferrer"&gt;@ankur_136&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Linux Insight Blogs: lsof</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Mon, 23 Jun 2025 11:32:39 +0000</pubDate>
      <link>https://dev.to/ankur0904/linux-insight-blogs-lsof-1o54</link>
      <guid>https://dev.to/ankur0904/linux-insight-blogs-lsof-1o54</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. In this blog we will gonna be learning about the &lt;code&gt;lsof&lt;/code&gt; a command-line utility on Unix/Linux systems. A command-line utility is a program or tool that you run using CLI(Command Line Interface) instead of GUI(graphical user interface).&lt;/p&gt;

&lt;h2&gt;
  
  
  lsof
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;lsof&lt;/code&gt; stands for "list open files". It's a powerful command-line utility on Unix/Linux systems that shows you which files are open by which processes, users, port, specific process and many more. In Linux, everything is treated as a file, so it's important to know how to list specific files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's get our hand dirty with code
&lt;/h2&gt;

&lt;p&gt;Open your terminal by pressing &lt;strong&gt;CTRL + Alt + T&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check all open files&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;    &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;TID&lt;/span&gt; &lt;span class="nx"&gt;TASKCMD&lt;/span&gt;               &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;      &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt; &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt;             &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;systemd&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;                            &lt;span class="nx"&gt;root&lt;/span&gt;  &lt;span class="nx"&gt;cwd&lt;/span&gt;   &lt;span class="nx"&gt;unknown&lt;/span&gt;                                  &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;proc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;cwd &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;readlink&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Permission&lt;/span&gt; &lt;span class="nx"&gt;denied&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;systemd&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;                            &lt;span class="nx"&gt;root&lt;/span&gt;  &lt;span class="nx"&gt;rtd&lt;/span&gt;   &lt;span class="nx"&gt;unknown&lt;/span&gt;                                  &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;proc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;root &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;readlink&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Permission&lt;/span&gt; &lt;span class="nx"&gt;denied&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;systemd&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;                            &lt;span class="nx"&gt;root&lt;/span&gt;  &lt;span class="nx"&gt;txt&lt;/span&gt;   &lt;span class="nx"&gt;unknown&lt;/span&gt;                                  &lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will get a long list of files that are currently open on your file system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check processes using a specific file&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check files using the given port&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;   &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt; &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt; &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3452&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;   &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;  &lt;span class="nx"&gt;IPv4&lt;/span&gt;  &lt;span class="mi"&gt;44686&lt;/span&gt;      &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;t0&lt;/span&gt;  &lt;span class="nx"&gt;TCP&lt;/span&gt; &lt;span class="nx"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LISTEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check files opened by a specific process&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;3452&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;3452&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;      &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt;  &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt;  &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3452&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;  &lt;span class="nx"&gt;cwd&lt;/span&gt;       &lt;span class="nx"&gt;DIR&lt;/span&gt;   &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;      &lt;span class="mi"&gt;4096&lt;/span&gt; &lt;span class="mi"&gt;43479&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webserver&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3452&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;  &lt;span class="nx"&gt;rtd&lt;/span&gt;       &lt;span class="nx"&gt;DIR&lt;/span&gt;   &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;      &lt;span class="mi"&gt;4096&lt;/span&gt;     &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check open network connections&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;   &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt; &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt; &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3717&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;   &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;  &lt;span class="nx"&gt;IPv4&lt;/span&gt;  &lt;span class="mi"&gt;52033&lt;/span&gt;      &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;t0&lt;/span&gt;  &lt;span class="nx"&gt;TCP&lt;/span&gt; &lt;span class="nx"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LISTEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show process that uses the internet connection now&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;P&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;   &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt; &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt; &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3725&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;   &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;  &lt;span class="nx"&gt;IPv4&lt;/span&gt;  &lt;span class="mi"&gt;44727&lt;/span&gt;      &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;t0&lt;/span&gt;  &lt;span class="nx"&gt;TCP&lt;/span&gt; &lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LISTEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lists all listening ports together with the PID of the associated process&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Pan&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;tcp&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;udp&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;   &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt; &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt; &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3725&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;   &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;  &lt;span class="nx"&gt;IPv4&lt;/span&gt;  &lt;span class="mi"&gt;44727&lt;/span&gt;      &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;t0&lt;/span&gt;  &lt;span class="nx"&gt;TCP&lt;/span&gt; &lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LISTEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show all open ports&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Pnl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;     &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;   &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt; &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt; &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3725&lt;/span&gt;     &lt;span class="mi"&gt;1000&lt;/span&gt;   &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;  &lt;span class="nx"&gt;IPv4&lt;/span&gt;  &lt;span class="mi"&gt;44727&lt;/span&gt;      &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;t0&lt;/span&gt;  &lt;span class="nx"&gt;TCP&lt;/span&gt; &lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LISTEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;List all files opened by a particular command&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;COMMAND&lt;/span&gt;  &lt;span class="nx"&gt;PID&lt;/span&gt;  &lt;span class="nx"&gt;USER&lt;/span&gt;   &lt;span class="nx"&gt;FD&lt;/span&gt;      &lt;span class="nx"&gt;TYPE&lt;/span&gt; &lt;span class="nx"&gt;DEVICE&lt;/span&gt;  &lt;span class="nx"&gt;SIZE&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;OFF&lt;/span&gt;  &lt;span class="nx"&gt;NODE&lt;/span&gt; &lt;span class="nx"&gt;NAME&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3725&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;  &lt;span class="nx"&gt;cwd&lt;/span&gt;       &lt;span class="nx"&gt;DIR&lt;/span&gt;   &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;      &lt;span class="mi"&gt;4096&lt;/span&gt; &lt;span class="mi"&gt;43479&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webserver&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3725&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;  &lt;span class="nx"&gt;rtd&lt;/span&gt;       &lt;span class="nx"&gt;DIR&lt;/span&gt;   &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;      &lt;span class="mi"&gt;4096&lt;/span&gt;     &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show 10 largest open file&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ankur:~$ lsof / | \
awk '{ if($7 &amp;gt; 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | \
sort -n -u | tail | column -t
0MB        NAME                                              COMMAND
1.37904MB  /usr/bin/bash                                     bash
2.02687MB  /usr/lib/x86_64-linux-gnu/libc.so.6               sh
2.47214MB  /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33     node
5.05953MB  /usr/lib/x86_64-linux-gnu/libcrypto.so.3          sort
114.61MB   /home/ankur/.nvm/versions/node/v22.14.0/bin/node  node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Show current working directory of a process&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ankur&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;lsof&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;3725&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;grep&lt;/span&gt; &lt;span class="nx"&gt;cwd&lt;/span&gt;
&lt;span class="nx"&gt;node&lt;/span&gt;    &lt;span class="mi"&gt;3725&lt;/span&gt; &lt;span class="nx"&gt;ankur&lt;/span&gt;  &lt;span class="nx"&gt;cwd&lt;/span&gt;       &lt;span class="nx"&gt;DIR&lt;/span&gt;   &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;      &lt;span class="mi"&gt;4096&lt;/span&gt; &lt;span class="mi"&gt;43479&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ankur&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webserver&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🎉 You nailed it
&lt;/h2&gt;

&lt;p&gt;You’ve now learned how to use the lsof command to inspect open files, network ports, and running processes like a pro. It’s time to open your terminal and try these commands on your own system. Play around, explore, and see what's happening under the hood of your machine. Got something cool or unexpected? Share your findings or favorite lsof tricks in the comments below!&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/trimstray/the-book-of-secret-knowledge?tab=readme-ov-file#tool-lsof" rel="noopener noreferrer"&gt;https://github.com/trimstray/the-book-of-secret-knowledge?tab=readme-ov-file#tool-lsof&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Lsof" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Lsof&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📧 Email: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
🔗 LinkedIn: &lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;Ankur Singh&lt;/a&gt;&lt;br&gt;
🔗Twitter: &lt;a href="https://twitter.com/ankur_136" rel="noopener noreferrer"&gt;@ankur_136&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect and create something great together!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Mon, 05 May 2025 17:19:36 +0000</pubDate>
      <link>https://dev.to/ankur0904/-78</link>
      <guid>https://dev.to/ankur0904/-78</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn" class="crayons-story__hidden-navigation-link"&gt;List of important Docker commands: Docker Series 03&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ankur0904" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F945575%2Fe5796c60-021e-43b4-af88-ab00008e156b.jpg" alt="ankur0904 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ankur0904" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ankur Singh
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ankur Singh
                
              
              &lt;div id="story-author-preview-content-2441923" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ankur0904" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F945575%2Fe5796c60-021e-43b4-af88-ab00008e156b.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ankur Singh&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 3 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn" id="article-link-2441923"&gt;
          List of important Docker commands: Docker Series 03
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/docker"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;docker&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/bash"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;bash&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>docker</category>
      <category>devops</category>
      <category>bash</category>
      <category>webdev</category>
    </item>
    <item>
      <title>List of important Docker commands: Docker Series 03</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sat, 03 May 2025 18:08:57 +0000</pubDate>
      <link>https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn</link>
      <guid>https://dev.to/ankur0904/list-of-important-docker-commands-docker-series-03-1ihn</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. If you want to learn about Docker and are a beginner, you have come to the right place. This blog series will cover everything from the very beginning to the end. This blog will teach us about the necessary and important Docker commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  List of commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  List the containers that are actively running
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;ps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: If the Docker commands are not running in your system, it is not installed or does not have enough privileges to use it with &lt;code&gt;sudo&lt;/code&gt; commands.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  List all the containers irrespective of their running status
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;ps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run a Docker container
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a container&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;container&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;world&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;linux&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Here, hello-world:linux is a hello world container image which is pulled from the docker hub&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Start the container&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;container&lt;/span&gt; &lt;span class="nx"&gt;start&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Container&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Here,  is the container ID which can be obtained by running the previous commands &lt;code&gt;docker ps&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Running the Docker container(short way)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;world&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;linux&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;docker run = docker container create + docker container start + docker container attach&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting the log of the container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;log&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Container&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run additional commands from the container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;exec&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Conatiner&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Commands&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Starting a interactive shell
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;exec&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;interactive&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;tty&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Container&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stop the container immediately
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remove the container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;rm&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Container&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  List all the docker image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remove the Docker image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;rmi&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Image&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remove the Docker Image forcefully
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;rmi&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Image&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Binding ports to the container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;5001&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt; &lt;span class="nx"&gt;our&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;server&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tagging the image name
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;tag&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;your&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;01&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;In this blog, we explored different commands of Docker containers, images, emphasising their roles in container &amp;amp; image creation. In the next blog, we will delve deeper into the technical aspects. &lt;strong&gt;Stay tuned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hire me: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://x.com/ankur_136" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>bash</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Docker Image, Container, Dockerfile: Docker Series for Beginners - 02</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Tue, 26 Nov 2024 04:29:29 +0000</pubDate>
      <link>https://dev.to/ankur0904/docker-series-for-beginners-02-45he</link>
      <guid>https://dev.to/ankur0904/docker-series-for-beginners-02-45he</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. If you want to learn about Docker and are a beginner, you came to the right place. This blog series will cover everything from the very beginning to the end. In this blog, we will learn about the relationship between Docker Container, Images &amp;amp; Dockerfile. If these words seem very overwhelming then &lt;strong&gt;don't worry&lt;/strong&gt; at the end of this blog, you will be able to know everything with the help of &lt;em&gt;recipes &amp;amp; food&lt;/em&gt; examples. Please stick with me till the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker Images
&lt;/h2&gt;

&lt;p&gt;In simple terms, a Docker image is like a recipe that tells the computer what files, tools, and instructions it needs to run an app. But just as a recipe needs to be cooked to make food, a Docker image needs to be "run" to create something useful—a Docker container!&lt;/p&gt;

&lt;p&gt;A more precise definition will look something like this:&lt;br&gt;
&lt;em&gt;A Docker image is a lightweight, standalone, and immutable package that includes all the necessary components (such as code, runtime, libraries, dependencies, and configurations) to run a specific application. It serves as a blueprint or template for creating Docker containers, which are the executable instances of the image.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Docker Images are generally immutable. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Docker Container
&lt;/h2&gt;

&lt;p&gt;A Docker container is like a finished dish made from a recipe. While the recipe (Docker image) tells you how to make the food, the container is the food ready to eat. &lt;/p&gt;

&lt;p&gt;In the same way, a Docker container is a working app created from the Docker image, and it can do everything it was designed to do!&lt;/p&gt;

&lt;p&gt;A more precise definition will look something like this:&lt;br&gt;
&lt;em&gt;A Docker container is a lightweight, standalone, and executable software package that includes everything needed to run an application: the code, runtime, system tools, libraries, and settings. It is a runtime instance of a Docker image that runs in an isolated environment, ensuring the application behaves the same regardless of where it is deployed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We have two ways to create the Docker Container, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Image&lt;/li&gt;
&lt;li&gt;Dockerfile&lt;/li&gt;
&lt;/ul&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%2F17giahqyw2nxr7ajvmso.jpeg" 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%2F17giahqyw2nxr7ajvmso.jpeg" alt="flow-chart" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have already learnt about the Docker Image. If in any case, our image is not present in the system then it'll try to fetch from the &lt;a href="https://www.docker.com/products/docker-hub/" rel="noopener noreferrer"&gt;Dockerhub&lt;/a&gt;, like we have Github &amp;amp; Gitlab for codes same as we have Dockerhub for the docker containers.&lt;/p&gt;

&lt;p&gt;Now time to learn about Dockerfile&lt;/p&gt;

&lt;h2&gt;
  
  
  Dockerfile
&lt;/h2&gt;

&lt;p&gt;A Dockerfile is a text file that contains instructions for building a Docker image. It acts like a blueprint or script, telling Docker step-by-step how to create the image, including which base image to use, what software or dependencies to install, and how to configure the application.&lt;/p&gt;

&lt;p&gt;If you don't understand Dockerfile, don't worry. The next blog is completely dedicated to Dockerfile, how to create a container with image as well as from the Dockerfile.&lt;/p&gt;

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

&lt;p&gt;In this blog, we explored Docker containers, images, and Dockerfiles, emphasizing their roles in container creation. In the next blog, we will delve deeper into the technical aspects, including commands related to Docker, and how to create containers from both images and Dockerfiles. &lt;strong&gt;Stay tuned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hire me: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://x.com/ankur_136" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>basic</category>
      <category>bash</category>
    </item>
    <item>
      <title>How to undo the most recent local commits in Git?</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sun, 24 Nov 2024 05:38:23 +0000</pubDate>
      <link>https://dev.to/ankur0904/how-to-undo-the-most-recent-local-commits-in-git-1jbd</link>
      <guid>https://dev.to/ankur0904/how-to-undo-the-most-recent-local-commits-in-git-1jbd</guid>
      <description>&lt;p&gt;Step 1:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;reset&lt;/span&gt; &lt;span class="nx"&gt;HEAD&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Make&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;changes&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;necessary&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="nx"&gt;ORIG_HEAD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
      <category>web</category>
    </item>
    <item>
      <title>Docker Container: Docker Series 01</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sat, 23 Nov 2024 17:40:44 +0000</pubDate>
      <link>https://dev.to/ankur0904/docker-series-for-beginners-01-33n6</link>
      <guid>https://dev.to/ankur0904/docker-series-for-beginners-01-33n6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. If you want to learn about Docker and are a complete beginner, you came to the right place. This blog series will cover everything from the very beginning to the end. This blog post will discuss what a container is, what Docker is, why Docker is necessary, and much more. So please stay with us until the end.&lt;/p&gt;

&lt;p&gt;In software or application development we always have to face this problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It works on my machine problem"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The main reasons for this problem are missing tools, different configurations, and hardware dependencies on different platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Docker and container are the solutions to this problem.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we need Docker &amp;amp; Containers?
&lt;/h2&gt;

&lt;p&gt;Suppose, my friend David and I are building a Flask web application I am using &lt;strong&gt;Ubuntu 22._ LTS&lt;/strong&gt; and he is using &lt;strong&gt;Windows 11&lt;/strong&gt;. I built the web app with some dependencies(e.g., Python version, Flask version, some run commands etc.) when I zipped the project folder and sent it to David, he called me and said &lt;strong&gt;It's not working on my machine&lt;/strong&gt; then I replied &lt;strong&gt;It works on my machine problem&lt;/strong&gt;. Can you guess why this happened? &lt;/p&gt;

&lt;p&gt;[Think about it Comment below the answer]&lt;/p&gt;

&lt;p&gt;The reason this happens is because of missing dependencies or conflicting dependencies. The simple meaning is that in the David system, there is a possibility that the dependency is not present(installed) or the version is not the same as my system's version. Then in this scenario, Docker and containers came into the picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Containers
&lt;/h2&gt;

&lt;p&gt;Containers are like little boxes that hold an app and everything it needs to run, like tools and instructions. They help the app work the same way on any computer, without getting mixed up with other apps.&lt;/p&gt;

&lt;p&gt;Don't confuse it with virtual machines, virtual machines are different things. Suppose in terms of the house, think of a &lt;strong&gt;virtual machine (VM)&lt;/strong&gt; as a big house where each app gets its own full house with walls, a kitchen, and a bathroom—it takes up a lot of space and needs a lot of work to build.  &lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;container&lt;/strong&gt; is like a small apartment in a big building. Each app gets its own room, but they share the walls and the building’s kitchen and bathroom, so it’s quicker and uses less space.&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%2Fywc3jjfduflymny24n2x.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%2Fywc3jjfduflymny24n2x.png" alt="Containers VS VM(Virtual Machines)" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Docker
&lt;/h2&gt;

&lt;p&gt;Docker is a platform that allows developers to package applications and their dependencies into lightweight, portable containers. These containers run consistently across different environments, providing isolation and ensuring that the application functions the same on any system that supports Docker.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;In Windows&lt;br&gt;
 You can download the exe file directly from the official &lt;a href="https://docs.docker.com/desktop/setup/install/windows-install/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And install it manually.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In Linux&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Step 1: Set up Docker apt repository&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Add&lt;/span&gt; &lt;span class="nx"&gt;Docker&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;s official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo "$VERSION_CODENAME") stable" | &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
sudo apt-get update
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Install the Docker package&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;sudo&lt;/span&gt; &lt;span class="nx"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ce&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ce&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;cli&lt;/span&gt; &lt;span class="nx"&gt;containerd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;buildx&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;plugin&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;compose&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;plugin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Verify that the installation&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;sudo&lt;/span&gt; &lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;world&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;In this blog, we explored the basics of Docker and containers, highlighting their role in solving the "it works on my machine" problem by providing consistent application performance across environments. Containers are lightweight, efficient, and simpler to use than virtual machines, making them a valuable tool for developers.&lt;/p&gt;

&lt;p&gt;Hire me: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://x.com/ankur_136" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>beginners</category>
      <category>basic</category>
      <category>web</category>
    </item>
    <item>
      <title>ChartDB: New Functionalities Unlocked! 🎉</title>
      <dc:creator>Ankur Singh</dc:creator>
      <pubDate>Sat, 16 Nov 2024 09:28:45 +0000</pubDate>
      <link>https://dev.to/ankur0904/chartdb-new-functionalities-unlocked-1ejc</link>
      <guid>https://dev.to/ankur0904/chartdb-new-functionalities-unlocked-1ejc</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome 👋 to this blog. This blog will introduce new functionalities of &lt;a href="https://chartdb.io/" rel="noopener noreferrer"&gt;chartDB&lt;/a&gt;. We have just added some new functionality to the chatDB project. This new functionality helps us share our diagram with other features and duplicate the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share Functionality Unlocked!
&lt;/h2&gt;

&lt;p&gt;Hey, we are very happy to introduce our new functionality of sharing the project with other users or friends. &lt;/p&gt;

&lt;p&gt;Here’s how it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For self-hosted users, simply run the latest update, and it’s ready to go!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For cloud-hosted users, we’ve added a sign-in requirement for some actions, like AI export, diagram export, and import. This helps prevent abuse and allows us to connect with you directly. We’d love to update you on new features and share our ChartDB journey!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To send the diagram you can &lt;strong&gt;Export&lt;/strong&gt; it into &lt;strong&gt;JSON&lt;/strong&gt; download it and send it to the recipient.&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%2Ff2cftv4koo0bns9ql6w3.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%2Ff2cftv4koo0bns9ql6w3.png" alt="export-image" width="207" height="117"&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%2F8sjtfc70ijmfncnx46sd.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%2F8sjtfc70ijmfncnx46sd.png" alt="export-to-JSON" width="529" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you have a JSON file you can upload it and see the output.&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%2F2el6cikg2gwb8aa55yfs.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%2F2el6cikg2gwb8aa55yfs.png" alt="import-image" width="411" height="127"&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%2Fj4nt3zrsu1whbpv9wl6g.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%2Fj4nt3zrsu1whbpv9wl6g.png" alt="upload-your-JSON-file" width="531" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table Duplication Unlocked! 🚀
&lt;/h2&gt;

&lt;p&gt;You can now duplicate tables effortlessly! Just right-click on a table or hit the three dots (options) next to the table name in the side panel to give it a try. 🔄 It's all about making your life easier, and we hope you love it!&lt;/p&gt;

&lt;p&gt;To duplicate the table follow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;First right click on the table which you want to duplicate&lt;br&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%2Fd64hpkrebcs6c4op4rpd.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%2Fd64hpkrebcs6c4op4rpd.png" alt="right-click-image" width="343" height="261"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then click on the duplicate table&lt;br&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%2F3jl45672igledfm8kza0.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%2F3jl45672igledfm8kza0.png" alt="duplicated-table" width="345" height="322"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;You have now learned how to use the share and duplicate feature of the ChartDB.&lt;/p&gt;

&lt;p&gt;Thank you for reading! If you enjoyed this content, feel free to connect to me:&lt;br&gt;
📧 Email: &lt;a href="mailto:ankursingh91002@gmail.com"&gt;ankursingh91002@gmail.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 LinkedIn: &lt;a href="https://www.linkedin.com/in/ankur-singh-161458227/" rel="noopener noreferrer"&gt;Ankur Singh&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 Twitter: &lt;a href="https://twitter.com/ankur_136" rel="noopener noreferrer"&gt;@ankur_136&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's connect and create something great together!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>sql</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
