<?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>Forem: Aryan Vaishnani</title>
    <description>The latest articles on Forem by Aryan Vaishnani (@aryan_vaishnani_067dd66e0).</description>
    <link>https://forem.com/aryan_vaishnani_067dd66e0</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%2F3574735%2Fa1d60274-f844-4468-b5ce-189444e38142.jpg</url>
      <title>Forem: Aryan Vaishnani</title>
      <link>https://forem.com/aryan_vaishnani_067dd66e0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aryan_vaishnani_067dd66e0"/>
    <language>en</language>
    <item>
      <title>Managing Groups in Linux</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 10:17:21 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/managing-groups-in-linux-518m</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/managing-groups-in-linux-518m</guid>
      <description>&lt;p&gt;Groups are used to manage permissions for multiple users together.&lt;/p&gt;

&lt;p&gt;Instead of giving permissions user-by-user, Linux allows assigning permissions to groups.&lt;/p&gt;

&lt;p&gt;Main commands:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;groupadd&lt;/li&gt;
&lt;li&gt;groupmod&lt;/li&gt;
&lt;li&gt;gpasswd&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What is a Group?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A group is a collection of users.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers group&lt;/li&gt;
&lt;li&gt;Docker group&lt;/li&gt;
&lt;li&gt;Admin group&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Group Information File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Linux stores group data in:&lt;/p&gt;

&lt;p&gt;/etc/group&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /etc/group&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Entry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker:x:999:aryan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. groupadd Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creates a new group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupadd groupname&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupadd developers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creates:&lt;/p&gt;

&lt;p&gt;developers&lt;/p&gt;

&lt;p&gt;group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Group with Custom GID&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupadd -g 2000 devops&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Docker Team Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;sudo groupadd dockerteam&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. groupmod Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modifies existing group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupmod options groupname&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rename Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupmod -n engineers developers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;p&gt;developers → engineers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change Group ID&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupmod -g 3000 engineers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rename Team Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo groupmod -n sre_team devops&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. gpasswd Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Manages group members and passwords.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add User to Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo gpasswd -a aryan docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;p&gt;Add aryan to docker group&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove User from Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo gpasswd -d aryan docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Group Administrator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo gpasswd -A aryan developers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primary vs Secondary Groups&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary Group&lt;/td&gt;
&lt;td&gt;Main group of user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secondary Group&lt;/td&gt;
&lt;td&gt;Extra permission groups&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;uid=1000(aryan) gid=1000(aryan) groups=1000(aryan),999(docker)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add User to Multiple Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker,sudo devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Groups in Linux&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Group&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;sudo&lt;/td&gt;
&lt;td&gt;Administrative access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker&lt;/td&gt;
&lt;td&gt;Docker permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wheel&lt;/td&gt;
&lt;td&gt;Admin access in RHEL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;www-data&lt;/td&gt;
&lt;td&gt;Web server user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;adm&lt;/td&gt;
&lt;td&gt;Log access&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Useful Group Commands&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;groupadd&lt;/td&gt;
&lt;td&gt;Create group&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;groupmod&lt;/td&gt;
&lt;td&gt;Modify group&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;groupdel&lt;/td&gt;
&lt;td&gt;Delete group&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpasswd&lt;/td&gt;
&lt;td&gt;Manage group members&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;groups&lt;/td&gt;
&lt;td&gt;Show user groups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;id&lt;/td&gt;
&lt;td&gt;Show UID/GID&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Creating &amp; Deleting Users (useradd, userdel, usermod)</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 10:11:24 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/creating-deleting-users-useradd-userdel-usermod-58kb</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/creating-deleting-users-useradd-userdel-usermod-58kb</guid>
      <description>&lt;p&gt;Linux provides commands to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create users&lt;/li&gt;
&lt;li&gt;Modify users&lt;/li&gt;
&lt;li&gt;Delete users&lt;/li&gt;
&lt;li&gt;Manage groups and permissions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Main commands:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;useradd&lt;/li&gt;
&lt;li&gt;userdel&lt;/li&gt;
&lt;li&gt;usermod&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. useradd Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creates a new user account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo useradd username&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo useradd devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creates:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User account&lt;/li&gt;
&lt;li&gt;Entry in /etc/passwd&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Set Password&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo passwd devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create User with Home Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo useradd -m devuser&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;m creates:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;/home/devuser&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create User with Shell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo useradd -m -s /bin/bash devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Options&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Option&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-m&lt;/td&gt;
&lt;td&gt;Create home directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-s&lt;/td&gt;
&lt;td&gt;Set login shell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-G&lt;/td&gt;
&lt;td&gt;Add supplementary groups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-u&lt;/td&gt;
&lt;td&gt;Custom UID&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Add User to Multiple Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo useradd -m -G docker,sudo devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create DevOps User&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;sudo useradd -m -G docker,sudo devops&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. userdel Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deletes a user account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo userdel username&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo userdel devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Removes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User account entry&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But home directory may remain&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delete User with Home Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo userdel -r devuser&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;r removes:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Home directory&lt;/li&gt;
&lt;li&gt;Mail spool&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove Temporary Employee Account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo userdel -r intern1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Never delete system users carelessly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. usermod Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modifies existing user accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod options username&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change Username&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -l newname oldname&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change Home Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -d /new/home devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add User to Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a = append&lt;/li&gt;
&lt;li&gt;G = supplementary group&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wrong command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -G docker devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This removes existing groups.&lt;/p&gt;

&lt;p&gt;Correct usage:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lock User Account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -L devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unlock User Account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -U devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change Shell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -s /bin/zsh devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World DevOps Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give Docker Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker aryan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give Sudo Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ubuntu/Debian:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG sudo devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;RHEL/CentOS:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG wheel devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful User Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check Current User&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;whoami&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show User Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;id devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;groups devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Switch User&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;su - devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check User Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /etc/passwd&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>understanding /etc/passwd, /etc/shadow, /etc/group</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 10:04:31 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/understanding-etcpasswd-etcshadow-etcgroup-491p</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/understanding-etcpasswd-etcshadow-etcgroup-491p</guid>
      <description>&lt;p&gt;These are important Linux system files used for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User management&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Password storage&lt;/li&gt;
&lt;li&gt;Group permissions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. /etc/passwd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores basic user account information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /etc/passwd&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Entry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;aryan❌1001:1001:Aryan:/home/aryan:/bin/bash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fields Explanation&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;aryan&lt;/td&gt;
&lt;td&gt;Username&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;Password stored in /etc/shadow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1001&lt;/td&gt;
&lt;td&gt;User ID (UID)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1001&lt;/td&gt;
&lt;td&gt;Group ID (GID)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aryan&lt;/td&gt;
&lt;td&gt;Comment/full name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/home/aryan&lt;/td&gt;
&lt;td&gt;Home directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/bin/bash&lt;/td&gt;
&lt;td&gt;Default shell&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Important Notes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UID Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;UID&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Root user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-999&lt;/td&gt;
&lt;td&gt;System users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1000+&lt;/td&gt;
&lt;td&gt;Normal users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check User Shell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep admin /etc/passwd&lt;/code&gt;  - Her the admin is username&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. /etc/shadow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores encrypted passwords and password policies.&lt;/p&gt;

&lt;p&gt;Very sensitive file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only root can access:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo cat /etc/shadow&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Entry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;aryan:$6$abcxyzhashedpassword:19800:0:99999:7:::&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fields Explanation&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;aryan&lt;/td&gt;
&lt;td&gt;Username&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$6$...&lt;/td&gt;
&lt;td&gt;Encrypted password&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19800&lt;/td&gt;
&lt;td&gt;Last password change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Minimum password age&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99999&lt;/td&gt;
&lt;td&gt;Maximum password age&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Warning days before expiry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Password Hash Types&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Prefix&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Algorithm&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$1$&lt;/td&gt;
&lt;td&gt;MD5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$5$&lt;/td&gt;
&lt;td&gt;SHA-256&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$6$&lt;/td&gt;
&lt;td&gt;SHA-512&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Security Importance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/etc/shadow permissions:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l /etc/shadow&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;r-------- root root&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only root can read it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check Password Expiry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chage -l vagrant&lt;/code&gt;  - vagrant is username.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. /etc/group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores group information.&lt;/p&gt;

&lt;p&gt;Groups help manage permissions for multiple users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /etc/group&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Entry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker:x:999:aryan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fields Explanation&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;docker&lt;/td&gt;
&lt;td&gt;Group name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;Group password placeholder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;999&lt;/td&gt;
&lt;td&gt;Group ID (GID)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aryan&lt;/td&gt;
&lt;td&gt;Group members&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check User Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;groups aryan&lt;/code&gt;  - aryan is group name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Linux Groups&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Group&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;sudo&lt;/td&gt;
&lt;td&gt;Administrative access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker&lt;/td&gt;
&lt;td&gt;Docker permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;www-data&lt;/td&gt;
&lt;td&gt;Web server user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wheel&lt;/td&gt;
&lt;td&gt;Admin group (RHEL/CentOS)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Important Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show Current User&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;whoami&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show User ID&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;id&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add User&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo useradd devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Password&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo passwd devuser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add User to Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker vagrant&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World DevOps Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give Docker Permission&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker aryan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Without this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;may fail with permission error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Importance&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;File&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Importance&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/etc/passwd&lt;/td&gt;
&lt;td&gt;User account info&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/etc/shadow&lt;/td&gt;
&lt;td&gt;Secure password storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/etc/group&lt;/td&gt;
&lt;td&gt;Permission management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Never manually edit /etc/shadow incorrectly&lt;/li&gt;
&lt;li&gt;Use vipw for safe editing&lt;/li&gt;
&lt;li&gt;Limit sudo access&lt;/li&gt;
&lt;li&gt;Use strong password policies&lt;/li&gt;
&lt;li&gt;Regularly audit groups and users&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>USB &amp; External Media Handling</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:57:36 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/usb-external-media-handling-j4h</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/usb-external-media-handling-j4h</guid>
      <description>&lt;p&gt;Linux can detect and manage:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;USB drives&lt;/li&gt;
&lt;li&gt;External hard disks&lt;/li&gt;
&lt;li&gt;SSDs&lt;/li&gt;
&lt;li&gt;Memory cards&lt;/li&gt;
&lt;li&gt;CD/DVD devices&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These devices are usually mounted under:&lt;/p&gt;

&lt;p&gt;/media&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;/mnt&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Detect Connected USB Devices&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;List USB Devices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsusb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Shows connected USB hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bus 001 Device 002: USB Flash Drive&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Check Storage Devices&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;List Disks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;sda      100G&lt;br&gt;
├─sda1    99G&lt;br&gt;
sdb       16G&lt;br&gt;
└─sdb1    16G&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;sdb *&lt;/em&gt; is likely the USB drive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create Mount Point&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before mounting, create a directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo mkdir /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Mount USB Drive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo mount /dev/sdb1 /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/dev/sdb1 = USB partition&lt;/li&gt;
&lt;li&gt;/mnt/usb = mount point&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Access USB Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Check Mounted Devices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/dev/sdb1   16G   2G   14G&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Unmount USB Drive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before removing device:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo umount /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo umount /dev/sdb1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Never remove USB storage without unmounting.&lt;/p&gt;

&lt;p&gt;Otherwise:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Data corruption may happen&lt;/li&gt;
&lt;li&gt;Files may be damaged&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;5. Automatic Mounting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modern Linux distributions automatically mount USB drives under:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/media/username/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/media/aryan/MyUSB&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Filesystem Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Common USB filesystem formats:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Filesystem&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;vfat/FAT32&lt;/td&gt;
&lt;td&gt;Windows compatibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exFAT&lt;/td&gt;
&lt;td&gt;Large USB storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NTFS&lt;/td&gt;
&lt;td&gt;Windows drives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ext4&lt;/td&gt;
&lt;td&gt;Linux native filesystem&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Check Filesystem Type&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsblk -f&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Format USB Drive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EXT4 Format&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo mkfs.ext4 /dev/sdb1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FAT32 Format&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo mkfs.vfat /dev/sdb1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Formatting deletes all data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Safely Remove Device&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After unmounting:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;udisksctl power-off -b /dev/sdb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Safely powers off USB device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backup Logs to External Disk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp /var/log/syslog /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transfer Kubernetes YAML Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp *.yaml /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Store Database Backups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysqldump database &amp;gt; /mnt/usb/backup.sql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful Commands Summary&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;lsusb&lt;/td&gt;
&lt;td&gt;Show USB devices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lsblk&lt;/td&gt;
&lt;td&gt;Show disks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mount&lt;/td&gt;
&lt;td&gt;Mount device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;umount&lt;/td&gt;
&lt;td&gt;Unmount device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;df -h&lt;/td&gt;
&lt;td&gt;Disk usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mkfs.ext4&lt;/td&gt;
&lt;td&gt;Format ext4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mkfs.vfat&lt;/td&gt;
&lt;td&gt;Format FAT32&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Common Mount Locations&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Directory&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/media&lt;/td&gt;
&lt;td&gt;Auto-mounted devices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/mnt&lt;/td&gt;
&lt;td&gt;Manual mounts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Always unmount before removal&lt;/li&gt;
&lt;li&gt;Verify device name before formatting&lt;/li&gt;
&lt;li&gt;Use df -h to confirm mount&lt;/li&gt;
&lt;li&gt;Avoid mounting unknown USB devices on servers&lt;/li&gt;
&lt;li&gt;Use proper filesystem types for compatibility.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Mount Points in Linux</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:51:32 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/mount-points-in-linux-29n5</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/mount-points-in-linux-29n5</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is a Mount Point?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A mount point is a directory where a storage device or filesystem is attached in Linux.&lt;/p&gt;

&lt;p&gt;Linux connects disks inside the filesystem tree instead of using drive letters like Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Device:&lt;/p&gt;

&lt;p&gt;/dev/sdb1&lt;/p&gt;

&lt;p&gt;Mounted on:&lt;/p&gt;

&lt;p&gt;/mnt/data&lt;/p&gt;

&lt;p&gt;After mounting, files inside the disk are accessible through:&lt;/p&gt;

&lt;p&gt;/mnt/data&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Mount Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mount /dev/sdb1 /mnt/data&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/dev/sdb1 = disk/partition&lt;/li&gt;
&lt;li&gt;/mnt/data = mount point&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Common Mount Point Directories&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Directory&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/mnt&lt;/td&gt;
&lt;td&gt;Temporary mounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/media&lt;/td&gt;
&lt;td&gt;USB/CD devices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;Root filesystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/home&lt;/td&gt;
&lt;td&gt;Separate user partition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/boot&lt;/td&gt;
&lt;td&gt;Boot partition&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Check Mounted Filesystems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mount&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mount USB Drive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo mount /dev/sdb1 /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Access files:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unmount Filesystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;umount /mnt/usb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;umount /dev/sdb1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You cannot safely remove a disk before unmounting it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatic Mounting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Linux stores permanent mount information in:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/fstab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;/dev/sdb1  /data  ext4  defaults  0 0&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mount points are heavily used in:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cloud servers&lt;/li&gt;
&lt;li&gt;Docker storage&lt;/li&gt;
&lt;li&gt;Kubernetes volumes&lt;/li&gt;
&lt;li&gt;External disks&lt;/li&gt;
&lt;li&gt;NFS shared storage&lt;/li&gt;
&lt;li&gt;Backup systems&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Common Filesystem Types&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Filesystem&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ext4&lt;/td&gt;
&lt;td&gt;Linux standard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xfs&lt;/td&gt;
&lt;td&gt;Enterprise systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vfat&lt;/td&gt;
&lt;td&gt;USB compatibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nfs&lt;/td&gt;
&lt;td&gt;Network storage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Always unmount safely&lt;/li&gt;
&lt;li&gt;Use /etc/fstab carefully&lt;/li&gt;
&lt;li&gt;Monitor disk usage with df -h&lt;/li&gt;
&lt;li&gt;Use proper permissions on mounted storage&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Hidden Files &amp; Directories in Linux</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:47:40 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/hidden-files-directories-in-linux-50go</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/hidden-files-directories-in-linux-50go</guid>
      <description>&lt;p&gt;In Linux, files or directories starting with a dot (.) are hidden.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;.bashrc&lt;br&gt;
.gitconfig&lt;br&gt;
.ssh&lt;/p&gt;

&lt;p&gt;These files are usually used for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;User settings&lt;/li&gt;
&lt;li&gt;Application data&lt;/li&gt;
&lt;li&gt;System customization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why Hidden Files Exist&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hidden files help keep:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuration files separate&lt;/li&gt;
&lt;li&gt;Home directory clean&lt;/li&gt;
&lt;li&gt;System settings protected from accidental changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Examples of Hidden Files&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;File&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;.bashrc&lt;/td&gt;
&lt;td&gt;Bash shell configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.profile&lt;/td&gt;
&lt;td&gt;User login settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.gitconfig&lt;/td&gt;
&lt;td&gt;Git configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.ssh&lt;/td&gt;
&lt;td&gt;SSH keys and configs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.vimrc&lt;/td&gt;
&lt;td&gt;Vim editor settings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;View Hidden Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Normal ls does not show hidden files.&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -a&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.bashrc&lt;br&gt;
.profile&lt;br&gt;
.ssh&lt;br&gt;
Documents&lt;br&gt;
Downloads&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detailed Hidden File View&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -la&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Shows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hidden files&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;li&gt;Owner&lt;/li&gt;
&lt;li&gt;File size&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Create Hidden File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add . before filename.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;touch .secret&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Hidden Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir .config&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Access Hidden Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd .config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/.ssh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Contains:&lt;/p&gt;

&lt;p&gt;id_rsa&lt;br&gt;
authorized_keys&lt;br&gt;
config&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat ~/.gitconfig&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bash Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano ~/.bashrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Common for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Aliases&lt;/li&gt;
&lt;li&gt;PATH variables&lt;/li&gt;
&lt;li&gt;Shell customization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Hide Existing File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rename file with dot.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mv notes.txt .notes.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now file becomes hidden.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find Hidden Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -name ".*"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Hidden Directories&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Directory&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;~/.ssh&lt;/td&gt;
&lt;td&gt;SSH keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~/.config&lt;/td&gt;
&lt;td&gt;App configs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~/.kube&lt;/td&gt;
&lt;td&gt;Kubernetes configs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~/.docker&lt;/td&gt;
&lt;td&gt;Docker configs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~/.git&lt;/td&gt;
&lt;td&gt;Git repository data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World DevOps Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes Config&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls ~/.kube&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Contains:&lt;/p&gt;

&lt;p&gt;config&lt;/p&gt;

&lt;p&gt;Used by:&lt;/p&gt;

&lt;p&gt;kubectl&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Notes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hidden Does NOT Mean Secure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hidden files are only visually hidden.&lt;/p&gt;

&lt;p&gt;Anyone with permissions can still access them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat .secret&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;still works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Do not delete hidden files carelessly&lt;/li&gt;
&lt;li&gt;Backup configuration files&lt;/li&gt;
&lt;li&gt;Protect sensitive hidden files with permissions&lt;/li&gt;
&lt;li&gt;Use hidden directories for configs only&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Quick Commands Summary&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ls -a&lt;/td&gt;
&lt;td&gt;Show hidden files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ls -la&lt;/td&gt;
&lt;td&gt;Detailed hidden files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;touch .file&lt;/td&gt;
&lt;td&gt;Create hidden file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mkdir .dir&lt;/td&gt;
&lt;td&gt;Create hidden directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mv file .file&lt;/td&gt;
&lt;td&gt;Hide file&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Absolute vs Relative Paths</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:38:32 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/absolute-vs-relative-paths-1hmb</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/absolute-vs-relative-paths-1hmb</guid>
      <description>&lt;p&gt;Paths are used to locate files and directories in Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Absolute Path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An absolute path starts from the root directory:&lt;/p&gt;

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

&lt;p&gt;It shows the complete location of a file or folder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/home/aryan/projects/app.py&lt;/p&gt;

&lt;p&gt;This path works from anywhere in the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Relative Path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A relative path starts from the current directory.&lt;/p&gt;

&lt;p&gt;It does NOT start with /.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Current directory:&lt;/p&gt;

&lt;p&gt;/home/aryan&lt;/p&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;cd projects&lt;/p&gt;

&lt;p&gt;Linux understands:&lt;/p&gt;

&lt;p&gt;/home/aryan/projects&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Special Symbols&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Symbol&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;Current directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;..&lt;/td&gt;
&lt;td&gt;Parent directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~&lt;/td&gt;
&lt;td&gt;Home directory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;./script.sh&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parent Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cd ..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Home Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cd ~&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference Table&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Absolute Path&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Relative Path&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Starts with /&lt;/td&gt;
&lt;td&gt;Does not start with /&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full location&lt;/td&gt;
&lt;td&gt;Based on current location&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Works everywhere&lt;/td&gt;
&lt;td&gt;Depends on current directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Longer&lt;/td&gt;
&lt;td&gt;Shorter&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Current directory:&lt;/p&gt;

&lt;p&gt;/var/log&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relative Path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Absolute Path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /var/log/nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Both go to same directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Easy Trick&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Absolute Path = Full address&lt;/li&gt;
&lt;li&gt;Relative Path = Nearby shortcut&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>File Types (Regular, Directory, Link, Device, Socket, Pipe)</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:36:03 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/file-types-regular-directory-link-device-socket-pipe-29c3</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/file-types-regular-directory-link-device-socket-pipe-29c3</guid>
      <description>&lt;p&gt;In Linux, everything is treated as a file.&lt;/p&gt;

&lt;p&gt;Linux supports different file types for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Data storage&lt;/li&gt;
&lt;li&gt;Directories&lt;/li&gt;
&lt;li&gt;Hardware devices&lt;/li&gt;
&lt;li&gt;Communication&lt;/li&gt;
&lt;li&gt;Inter-process communication&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Main Linux File Types&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;File Type&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Symbol&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Regular File&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Store data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Directory&lt;/td&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;td&gt;Store files/folders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Symbolic Link&lt;/td&gt;
&lt;td&gt;l&lt;/td&gt;
&lt;td&gt;Point to another file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Character Device&lt;/td&gt;
&lt;td&gt;c&lt;/td&gt;
&lt;td&gt;Character-based devices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block Device&lt;/td&gt;
&lt;td&gt;b&lt;/td&gt;
&lt;td&gt;Block storage devices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Socket&lt;/td&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;td&gt;Process communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Named Pipe (FIFO)&lt;/td&gt;
&lt;td&gt;p&lt;/td&gt;
&lt;td&gt;Data transfer between processes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Check File Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rw-r--r-- file.txt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;drwxr-xr-x  documents&lt;/p&gt;

&lt;p&gt;lrwxrwxrwx  link -&amp;gt; file.txt&lt;/p&gt;

&lt;p&gt;The first character shows the file type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Regular File -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Text&lt;/li&gt;
&lt;li&gt;Scripts&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Programs&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;file.txt&lt;br&gt;
script.sh&lt;br&gt;
app.log&lt;br&gt;
image.png&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rw-r--r-- file.txt&lt;/li&gt;
&lt;li&gt;indicates regular file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/var/log/syslog&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shell Scripts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;backup.sh&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Directory d&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Files&lt;/li&gt;
&lt;li&gt;Other directories&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;drwxr-xr-x projects&lt;/p&gt;

&lt;p&gt;d indicates directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Directories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/home&lt;br&gt;
/etc&lt;br&gt;
/var&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes Manifests Folder&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;mkdir k8s&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Symbolic Link l&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Points to another file or directory.&lt;/p&gt;

&lt;p&gt;Similar to shortcuts in Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Symbolic Link&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ln -s original.txt link.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;lrwxrwxrwx link.txt -&amp;gt; original.txt&lt;/p&gt;

&lt;p&gt;l indicates symbolic link.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ln -s /opt/app/current current_app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Very common in DevOps deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Easy version switching&lt;/li&gt;
&lt;li&gt;Shared configurations&lt;/li&gt;
&lt;li&gt;Flexible file management&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;4. Character Device File c&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Handles character-by-character device communication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/dev/tty&lt;br&gt;
/dev/random&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;crw-rw-rw- /dev/tty&lt;/p&gt;

&lt;p&gt;c indicates character device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keyboard Input&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/dev/tty&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Random Number Generator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/dev/random&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Block Device File b&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Represents block storage devices.&lt;/p&gt;

&lt;p&gt;Data transferred in blocks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/dev/sda&lt;br&gt;
/dev/nvme0n1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;brw-rw---- /dev/sda&lt;/p&gt;

&lt;p&gt;b indicates block device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disk Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Shows block devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Used For&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hard disks&lt;/li&gt;
&lt;li&gt;SSDs&lt;/li&gt;
&lt;li&gt;USB drives&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;6. Socket File s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Used for communication between processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/var/run/docker.sock&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;srw-rw---- docker.sock&lt;/p&gt;

&lt;p&gt;s indicates socket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker Communication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/var/run/docker.sock&lt;/p&gt;

&lt;p&gt;Docker client communicates with Docker daemon through socket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Services Using Sockets&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;systemd&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;7. Named Pipe (FIFO) p&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Used for inter-process communication.&lt;/p&gt;

&lt;p&gt;FIFO = First In First Out&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Named Pipe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;mkfifo mypipe&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;prw-r--r-- mypipe&lt;/p&gt;

&lt;p&gt;p indicates pipe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Process Communication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One process writes:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo "Hello" &amp;gt; mypipe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Another reads:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat mypipe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Type Symbols Summary&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Symbol&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;File Type&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Regular file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;td&gt;Directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;l&lt;/td&gt;
&lt;td&gt;Symbolic link&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;c&lt;/td&gt;
&lt;td&gt;Character device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;b&lt;/td&gt;
&lt;td&gt;Block device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;td&gt;Socket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p&lt;/td&gt;
&lt;td&gt;Named pipe&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Useful Commands for File Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identify File Type&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;file filename&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;file script.sh&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Bourne-Again shell script&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List Detailed File Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find Specific File Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find Symbolic Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -type l&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find Directories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -type d&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find Regular Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -type f&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>learning</category>
    </item>
    <item>
      <title>Linux Directory Structure (/bin, /etc, /var, /home, /usr, /tmp)</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:29:43 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/linux-directory-structure-bin-etc-var-home-usr-tmp-4b35</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/linux-directory-structure-bin-etc-var-home-usr-tmp-4b35</guid>
      <description>&lt;p&gt;&lt;strong&gt;Linux Directory Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Linux follows a standard filesystem hierarchy where every file and directory starts from the root directory:&lt;/p&gt;

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

&lt;p&gt;This structure is called the:&lt;/p&gt;

&lt;p&gt;Filesystem Hierarchy Standard (FHS)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Root Directory /&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The top-level directory in Linux.&lt;/p&gt;

&lt;p&gt;Everything exists under:&lt;/p&gt;

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

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;/home&lt;br&gt;
/etc&lt;br&gt;
/var&lt;br&gt;
/usr&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux Directory Tree&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/&lt;br&gt;
├── bin&lt;br&gt;
├── boot&lt;br&gt;
├── dev&lt;br&gt;
├── etc&lt;br&gt;
├── home&lt;br&gt;
├── lib&lt;br&gt;
├── media&lt;br&gt;
├── mnt&lt;br&gt;
├── opt&lt;br&gt;
├── proc&lt;br&gt;
├── root&lt;br&gt;
├── run&lt;br&gt;
├── sbin&lt;br&gt;
├── srv&lt;br&gt;
├── sys&lt;br&gt;
├── tmp&lt;br&gt;
├── usr&lt;br&gt;
└── var&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Linux Directories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. /bin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Essential user binaries (commands).&lt;/p&gt;

&lt;p&gt;Contains basic commands required for system operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/bin/ls&lt;br&gt;
/bin/cp&lt;br&gt;
/bin/mv&lt;br&gt;
/bin/bash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Commands available even in recovery mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. /sbin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System binaries.&lt;/p&gt;

&lt;p&gt;Contains administrative commands mainly used by root user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/sbin/reboot&lt;br&gt;
/sbin/fsck&lt;br&gt;
/sbin/ip&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Used For&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;System repair&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;Boot management&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;3. /boot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Boot-related files.&lt;/p&gt;

&lt;p&gt;Contains:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Linux kernel&lt;/li&gt;
&lt;li&gt;Bootloader files&lt;/li&gt;
&lt;li&gt;initramfs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/boot/vmlinuz&lt;br&gt;
/boot/grub&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Importance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Critical for system startup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. /dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Device files.&lt;/p&gt;

&lt;p&gt;Linux treats hardware devices as files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/dev/sda&lt;br&gt;
/dev/null&lt;br&gt;
/dev/tty&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Devices&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/dev/sda&lt;/td&gt;
&lt;td&gt;Hard disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/dev/null&lt;/td&gt;
&lt;td&gt;Discard output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/dev/random&lt;/td&gt;
&lt;td&gt;Random generator&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redirect Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command &amp;gt; /dev/null&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. /etc&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System configuration files.&lt;/p&gt;

&lt;p&gt;One of the most important directories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/etc/passwd&lt;br&gt;
/etc/hosts&lt;br&gt;
/etc/nginx/&lt;br&gt;
/etc/ssh/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit SSH Config&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vim /etc/ssh/sshd_config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. /home&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;User home directories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/home/aryan&lt;br&gt;
/home/user1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contains&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;Downloads&lt;/li&gt;
&lt;li&gt;User configs&lt;/li&gt;
&lt;li&gt;Scripts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Hidden Files Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/home/user/.bashrc&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. /root&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Home directory of root user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/root&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Directory&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/home/user&lt;/td&gt;
&lt;td&gt;Normal user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/root&lt;/td&gt;
&lt;td&gt;Root administrator&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;8. /lib and /lib64&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shared libraries required by programs.&lt;/p&gt;

&lt;p&gt;Similar to DLL files in Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/lib/modules&lt;br&gt;
/lib64/libc.so&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Importance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Programs depend on these libraries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. /usr&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;User applications and utilities.&lt;/p&gt;

&lt;p&gt;Largest directory in many systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Subdirectories&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Path&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/usr/bin&lt;/td&gt;
&lt;td&gt;User commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/usr/sbin&lt;/td&gt;
&lt;td&gt;Admin commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/usr/lib&lt;/td&gt;
&lt;td&gt;Libraries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/usr/share&lt;/td&gt;
&lt;td&gt;Shared data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/usr/bin/python&lt;br&gt;
/usr/bin/docker&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. /var&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Variable data files.&lt;/p&gt;

&lt;p&gt;Data changes frequently here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Subdirectories&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Path&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/var/log&lt;/td&gt;
&lt;td&gt;Logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/var/cache&lt;/td&gt;
&lt;td&gt;Cache&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/var/www&lt;/td&gt;
&lt;td&gt;Web files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/var/spool&lt;/td&gt;
&lt;td&gt;Queues&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /var/log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/var/log/syslog&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;/var/log/nginx/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11. /tmp&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Temporary files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Characteristics&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Temporary storage&lt;/li&gt;
&lt;li&gt;Often cleared on reboot&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/tmp/install.tmp&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scripts store temporary data here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. /proc&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Virtual filesystem containing process and kernel information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/proc/cpuinfo&lt;/code&gt;&lt;br&gt;
&lt;code&gt;/proc/meminfo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check CPU Info&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /proc/cpuinfo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13. /sys&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kernel and hardware information.&lt;/p&gt;

&lt;p&gt;Used for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Device management&lt;/li&gt;
&lt;li&gt;Kernel tuning&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/sys/class&lt;br&gt;
/sys/devices&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14. /opt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Optional third-party software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/opt/google&lt;br&gt;
/opt/app&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Custom applications installed here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15. /mnt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Temporary mount points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/mnt/backup&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Used For&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mount disks&lt;/li&gt;
&lt;li&gt;Attach storage&lt;/li&gt;
&lt;li&gt;Temporary filesystems&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;16. /media&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Removable media devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/media/usb&lt;br&gt;
/media/cdrom&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Used For&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;USB drives and external devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;17. /run&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Runtime process data.&lt;/p&gt;

&lt;p&gt;Contains temporary system information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/run/docker.sock&lt;br&gt;
/run/systemd/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Docker socket communication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;18. /srv&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Service data provided by system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/srv/www&lt;br&gt;
/srv/ftp&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux Directory Quick Summary&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Directory&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;Root filesystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/bin&lt;/td&gt;
&lt;td&gt;Essential commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/sbin&lt;/td&gt;
&lt;td&gt;System commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/boot&lt;/td&gt;
&lt;td&gt;Boot files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/dev&lt;/td&gt;
&lt;td&gt;Device files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/etc&lt;/td&gt;
&lt;td&gt;Configurations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/home&lt;/td&gt;
&lt;td&gt;User directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/root&lt;/td&gt;
&lt;td&gt;Root user home&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/lib&lt;/td&gt;
&lt;td&gt;Libraries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/usr&lt;/td&gt;
&lt;td&gt;Applications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/var&lt;/td&gt;
&lt;td&gt;Logs and variable data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/tmp&lt;/td&gt;
&lt;td&gt;Temporary files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/proc&lt;/td&gt;
&lt;td&gt;Process info&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/sys&lt;/td&gt;
&lt;td&gt;Kernel info&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/opt&lt;/td&gt;
&lt;td&gt;Optional software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/mnt&lt;/td&gt;
&lt;td&gt;Temporary mounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/media&lt;/td&gt;
&lt;td&gt;External media&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/run&lt;/td&gt;
&lt;td&gt;Runtime data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/srv&lt;/td&gt;
&lt;td&gt;Service data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>systems</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Basic Input/Output Redirection</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:18:40 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/basic-inputoutput-redirection-2jd4</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/basic-inputoutput-redirection-2jd4</guid>
      <description>&lt;p&gt;Input and Output redirection allows Linux users to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save command output to files&lt;/li&gt;
&lt;li&gt;Read input from files&lt;/li&gt;
&lt;li&gt;Combine commands&lt;/li&gt;
&lt;li&gt;Redirect errors&lt;/li&gt;
&lt;li&gt;Automate workflows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Standard Streams in Linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Linux processes use three default streams.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Stream&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Number&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;STDIN&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STDOUT&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Normal output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STDERR&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Error output&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;1. Output Redirection &amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Redirect command output into a file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command &amp;gt; file&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls &amp;gt; files.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Instead of showing output on terminal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Output is saved in:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;files.txt&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Behavior&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;overwrites file content.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo "Hello" &amp;gt; test.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;File content becomes:&lt;/p&gt;

&lt;p&gt;Hello&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Save Process List&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps aux &amp;gt; processes.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Export Kubernetes Pods&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl get pods &amp;gt; pods.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Append Output &amp;gt;&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Append output to existing file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command &amp;gt;&amp;gt; file&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo "New Log" &amp;gt;&amp;gt; app.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Adds text to end of file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference Between &amp;gt; and &amp;gt;&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Operator&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Behavior&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;Overwrite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;Append&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Append Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;date &amp;gt;&amp;gt; backup.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Store Deployment History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl get nodes &amp;gt;&amp;gt; cluster_status.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Input Redirection &amp;lt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provide file content as input to command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command &amp;lt; file&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wc -l &amp;lt; users.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Counts lines in file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL Script Execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysql &amp;lt; database.sql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Error Redirection 2&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Redirect errors separately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;command 2&amp;gt; error.log&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls invalidfile 2&amp;gt; errors.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Error saved into:&lt;/p&gt;

&lt;p&gt;errors.txt&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Save Deployment Errors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl apply -f app.yaml 2&amp;gt; deploy_errors.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Redirect STDOUT and STDERR Together&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command &amp;gt; output.log 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Part&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Redirect stdout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2&amp;gt;&amp;amp;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Redirect stderr to stdout&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps &amp;gt; docker.log 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Both:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Normal output&lt;/li&gt;
&lt;li&gt;Errors&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;go into same file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modern Shortcut&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command &amp;amp;&amp;gt; file.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Pipe |&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Send output of one command as input to another.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;command1 | command2&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l | less&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps aux | grep nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ps aux shows processes&lt;/li&gt;
&lt;li&gt;Output passed to grep&lt;/li&gt;
&lt;li&gt;grep filters nginx processes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl get pods | grep running&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps | grep nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Tee Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Display output and save to file simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;command | tee file&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls | tee output.txt&lt;/code&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Displays on terminal&lt;/li&gt;
&lt;li&gt;Saves in file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Save Deployment Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl apply -f app.yaml | tee deploy.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical DevOps Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tail -f app.log | grep ERROR&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Save System Information&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;df -h &amp;gt; disk_usage.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Store Failed Services&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;systemctl status nginx 2&amp;gt; nginx_errors.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backup Kubernetes Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl get all &amp;gt; cluster_backup.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Redirection Symbols&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Symbol&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;Redirect output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;Append output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&lt;/td&gt;
&lt;td&gt;Redirect input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&amp;gt;&lt;/td&gt;
&lt;td&gt;Redirect errors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tee&lt;/td&gt;
&lt;td&gt;Save and display output&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Dangerous Mistake&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accidentally Overwriting File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo "test" &amp;gt; important.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This removes old content.&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;if appending is needed.&lt;/p&gt;

</description>
      <category>linux</category>
    </item>
    <item>
      <title>Wildcards &amp; Globbing</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:10:05 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/wildcards-globbing-63h</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/wildcards-globbing-63h</guid>
      <description>&lt;p&gt;Wildcards and globbing are used to match:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;File names&lt;/li&gt;
&lt;li&gt;Directory names&lt;/li&gt;
&lt;li&gt;Patterns&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They help users work with multiple files quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Globbing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Globbing is the process where the shell expands wildcard patterns into matching filenames.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls *.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The shell automatically replaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.txt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;with all matching .txt files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Wildcards&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Wildcard&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;td&gt;Match zero or more characters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;Match single character&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[]&lt;/td&gt;
&lt;td&gt;Match character range/set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;{}&lt;/td&gt;
&lt;td&gt;Match multiple patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~&lt;/td&gt;
&lt;td&gt;Home directory shortcut&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*&lt;em&gt;1. Asterisk *&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;zero or more characters&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match All Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls *&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Text Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls *.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;notes.txt&lt;br&gt;
app.txt&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Log Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls *.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delete Old Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm *.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copy All YAML Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp *.yaml /backup/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Common in Kubernetes management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Question Mark ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;exactly one character&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls file?.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;file1.txt&lt;br&gt;
fileA.txt&lt;/p&gt;

&lt;p&gt;Does NOT match:&lt;/p&gt;

&lt;p&gt;file10.txt&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Numbered Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls backup?.tar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Square Brackets []&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Matches specific characters or ranges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Specific Characters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls file[123].txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;file1.txt&lt;br&gt;
file2.txt&lt;br&gt;
file3.txt&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Character Range&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls file[a-z].txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match Numbers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls log[0-9].txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Process Multiple Server Configs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat server[1-5].conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Curly Braces {}&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Used for pattern expansion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir {dev,test,prod}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creates:&lt;/p&gt;

&lt;p&gt;dev/&lt;br&gt;
test/&lt;br&gt;
prod/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multiple Extensions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls *.{txt,log}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;app.txt&lt;br&gt;
error.log&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Deployment Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir -p app/{logs,config,data}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creates:&lt;/p&gt;

&lt;p&gt;app/logs&lt;br&gt;
app/config&lt;br&gt;
app/data&lt;/p&gt;

&lt;p&gt;Very common in DevOps setups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Tilde ~&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Represents:&lt;/p&gt;

&lt;p&gt;home directory&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Moves to:&lt;/p&gt;

&lt;p&gt;/home/user&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View Hidden Files with Wildcards&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hidden files start with:&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls .*&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Combining Wildcards&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls backup*.tar.gz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Matches:&lt;/p&gt;

&lt;p&gt;backup1.tar.gz&lt;br&gt;
backup_final.tar.gz&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recursive File Operations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find All YAML Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -name "*.yaml"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Very common in Kubernetes projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical DevOps Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes YAML Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubectl apply -f *.yaml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Applies all YAML manifests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backup Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp /var/log/*.log /backup/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove Temporary Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm temp*&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy Multiple Configs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scp config*.json server:/opt/config/&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
    </item>
    <item>
      <title>Command History &amp; Completion</title>
      <dc:creator>Aryan Vaishnani</dc:creator>
      <pubDate>Mon, 25 May 2026 09:03:48 +0000</pubDate>
      <link>https://forem.com/aryan_vaishnani_067dd66e0/command-history-completion-icg</link>
      <guid>https://forem.com/aryan_vaishnani_067dd66e0/command-history-completion-icg</guid>
      <description>&lt;p&gt;Linux shells like Bash and Z shell provide powerful features for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Command history&lt;/li&gt;
&lt;li&gt;Auto-completion&lt;/li&gt;
&lt;li&gt;Faster command execution&lt;/li&gt;
&lt;li&gt;Productivity improvement&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Command History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Command History?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Linux stores previously executed commands in a history file.&lt;/p&gt;

&lt;p&gt;This allows users to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reuse commands&lt;/li&gt;
&lt;li&gt;Avoid retyping&lt;/li&gt;
&lt;li&gt;Track previous operations&lt;/li&gt;
&lt;li&gt;Speed up administration work&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;View Command History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;History&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run Previous Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run Specific History Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;!4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Executes command number 4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repeat Last Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;!!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repeat Last Command Starting with Specific Text&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;!docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Runs latest command starting with docker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;History Navigation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use keyboard:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Key&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;↑&lt;/td&gt;
&lt;td&gt;Previous command&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;↓&lt;/td&gt;
&lt;td&gt;Next command&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Very commonly used in daily Linux work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search History Interactively&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reverse Search&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Press:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CTRL + R&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then type:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Searches previous docker commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;History File Location&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For Bash:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.bash_history&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Zsh:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.zsh_history&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure History Size&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Temporary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;HISTSIZE=5000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permanent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Edit:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano ~/.bashrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;export HISTSIZE=10000&lt;/code&gt;&lt;br&gt;
&lt;code&gt;export HISTFILESIZE=20000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Reload:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignore Duplicate Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add in .bashrc:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;export HISTCONTROL=ignoredups&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clear History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current Session&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;history -c&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delete History File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm ~/.bash_history&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Usage of History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;history | grep kubectl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Find old Kubernetes commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;history | grep docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;history | grep nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Check previous server changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Command Completion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Auto-Completion?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Auto-completion automatically completes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Commands&lt;/li&gt;
&lt;li&gt;File names&lt;/li&gt;
&lt;li&gt;Directories&lt;/li&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Kubernetes resources&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mainly done using:&lt;/p&gt;

&lt;p&gt;TAB key&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Completion Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Type:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd Doc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Press:&lt;/p&gt;

&lt;p&gt;TAB&lt;/p&gt;

&lt;p&gt;Becomes:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd Documents/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bash Completion Package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Advanced completion support package.&lt;/p&gt;

&lt;p&gt;Install:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ubuntu/Debian&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install bash-completion -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enable Bash Completion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Edit:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano ~/.bashrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;source /usr/share/bash-completion/bash_completion&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Reload:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>history</category>
    </item>
  </channel>
</rss>
