<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fahad Vahora</title>
    <description>The latest articles on DEV Community by Fahad Vahora (@teamworkfahad).</description>
    <link>https://dev.to/teamworkfahad</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1435502%2F4038e1b0-671a-4fca-86b4-4e3732bbf46b.png</url>
      <title>DEV Community: Fahad Vahora</title>
      <link>https://dev.to/teamworkfahad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/teamworkfahad"/>
    <language>en</language>
    <item>
      <title>Linux Practical Set H Solution – Employee Gross Salary</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Fri, 14 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-h-solution-employee-gross-salary-3a2g</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-h-solution-employee-gross-salary-3a2g</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set H&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;This practical focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User input&lt;/li&gt;
&lt;li&gt;&lt;code&gt;if-else&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Arithmetic operations&lt;/li&gt;
&lt;li&gt;Percentage calculation&lt;/li&gt;
&lt;li&gt;Employee salary calculation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Practical Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a shell script that computes the gross salary of an employee according to the following:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  If Basic Salary is less than ₹50,000
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HRA = 20% of Basic Salary&lt;/li&gt;
&lt;li&gt;DA = 164% of Basic Salary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  If Basic Salary is greater than ₹50,000
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HRA = 15% of Basic Salary&lt;/li&gt;
&lt;li&gt;DA = 136% of Basic Salary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Input Requirement
&lt;/h3&gt;

&lt;p&gt;The basic salary should be entered &lt;strong&gt;interactively through the keyboard&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gross Salary Formula
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gross Salary = Basic Salary + DA + HRA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧠 Understanding the Problem
&lt;/h2&gt;

&lt;p&gt;Let:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Basic Salary = B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HRA = 20% of B
DA  = 164% of B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HRA = 15% of B
DA  = 136% of B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gross Salary = B + HRA + DA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚠️ Important Note About ₹50,000
&lt;/h2&gt;

&lt;p&gt;The original question specifies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Basic Salary &amp;lt; 50000
Basic Salary &amp;gt; 50000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It does &lt;strong&gt;not explicitly define what should happen when Basic Salary is exactly ₹50,000&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Therefore, in the solutions below, the &lt;code&gt;50000&lt;/code&gt; case is handled separately.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧮 Example Calculation
&lt;/h2&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Basic Salary = ₹40,000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;we use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HRA = 20% of 40000
    = 8000

DA = 164% of 40000
   = 65600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gross Salary = 40000 + 8000 + 65600
             = ₹113600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Solution 1: Using Basic Bash &lt;code&gt;if-else&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is the simplest and most suitable solution for a university practical examination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Basic Salary:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;basic

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
    &lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;164&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
    &lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;136&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Basic salary of exactly 50000 is not defined in the question."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;gross&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;+&lt;/span&gt; hra &lt;span class="o"&gt;+&lt;/span&gt; da&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Basic Salary : &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"HRA          : &lt;/span&gt;&lt;span class="nv"&gt;$hra&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"DA           : &lt;/span&gt;&lt;span class="nv"&gt;$da&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Gross Salary : &lt;/span&gt;&lt;span class="nv"&gt;$gross&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Step-by-Step Explanation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Take Basic Salary
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;read &lt;/span&gt;basic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The salary entered by the user is stored in the variable &lt;code&gt;basic&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Check Salary Below ₹50,000
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-lt&lt;/code&gt; operator means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Less than&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So this condition checks:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If the condition is true, HRA and DA are calculated using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;164&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 3: Check Salary Above ₹50,000
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-gt&lt;/code&gt; operator means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Greater than&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So this condition checks:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;HRA and DA are then calculated using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;136&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 4: Calculate Gross Salary
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;gross&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;+&lt;/span&gt; hra &lt;span class="o"&gt;+&lt;/span&gt; da&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The formula is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gross Salary = Basic Salary + HRA + DA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ Example Output – Basic Salary Less Than ₹50,000
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Basic Salary:
40000
-----------------------------
Basic Salary : 40000
HRA          : 8000
DA           : 65600
Gross Salary : 113600
-----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ Example Output – Basic Salary Greater Than ₹50,000
&lt;/h2&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Basic Salary = 60000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Calculation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HRA = 15% of 60000 = 9000
DA  = 136% of 60000 = 81600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Basic Salary:
60000
-----------------------------
Basic Salary : 60000
HRA          : 9000
DA           : 81600
Gross Salary : 150600
-----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ❌ Example Output – Basic Salary Exactly ₹50,000
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Basic Salary:
50000

Basic salary of exactly 50000 is not defined in the question.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script handles this case separately because the original question does not specify an HRA/DA rule for exactly ₹50,000.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Limitation of Basic Bash Arithmetic
&lt;/h2&gt;

&lt;p&gt;Bash arithmetic using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;$((&lt;/span&gt; ... &lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;works with integers.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;produces:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;not:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If decimal salary values need to be supported, &lt;code&gt;awk&lt;/code&gt; or &lt;code&gt;bc&lt;/code&gt; can be used.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Solution 2: Using &lt;code&gt;awk&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;awk&lt;/code&gt; supports floating-point arithmetic, so it is useful when the basic salary can contain decimal values.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Basic Salary:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;basic

&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;basic&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s1"&gt;'
BEGIN {
    if (basic &amp;lt; 50000) {
        hra = basic * 20 / 100
        da = basic * 164 / 100
    }
    else if (basic &amp;gt; 50000) {
        hra = basic * 15 / 100
        da = basic * 136 / 100
    }
    else {
        print "Basic salary of exactly 50000 is not defined in the question."
        exit 1
    }

    gross = basic + hra + da

    printf "-----------------------------\n"
    printf "Basic Salary : %.2f\n", basic
    printf "HRA          : %.2f\n", hra
    printf "DA           : %.2f\n", da
    printf "Gross Salary : %.2f\n", gross
    printf "-----------------------------\n"
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Basic Salary:
42500.50

-----------------------------
Basic Salary : 42500.50
HRA          : 8500.10
DA           : 69700.82
Gross Salary : 120701.42
-----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;%.2f&lt;/code&gt; format displays the values with two decimal places.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Why Use &lt;code&gt;awk&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;The main advantage is floating-point arithmetic.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'BEGIN { printf "%.2f\n", 5 / 2 }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;/div&gt;



&lt;p&gt;So &lt;code&gt;awk&lt;/code&gt; is useful when decimal values are required.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Solution 3: Using &lt;code&gt;bc&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;bc&lt;/code&gt; is another command-line calculator that can perform decimal calculations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Basic Salary:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;basic

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt; 50000"&lt;/span&gt; | bc &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; * 20 / 100"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; * 164 / 100"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; &amp;gt; 50000"&lt;/span&gt; | bc &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; * 15 / 100"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; * 136 / 100"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Basic salary of exactly 50000 is not defined in the question."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;gross&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; + &lt;/span&gt;&lt;span class="nv"&gt;$hra&lt;/span&gt;&lt;span class="s2"&gt; + &lt;/span&gt;&lt;span class="nv"&gt;$da&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Basic Salary : &lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"HRA          : &lt;/span&gt;&lt;span class="nv"&gt;$hra&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"DA           : &lt;/span&gt;&lt;span class="nv"&gt;$da&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Gross Salary : &lt;/span&gt;&lt;span class="nv"&gt;$gross&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Basic Salary:
42500.50

-----------------------------
Basic Salary : 42500.50
HRA          : 8500.10
DA           : 69700.82
Gross Salary : 120701.42
-----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Understanding the &lt;code&gt;bc&lt;/code&gt; Solution
&lt;/h2&gt;

&lt;p&gt;This:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt; 50000"&lt;/span&gt; | bc &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;checks the comparison using &lt;code&gt;bc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"42500.50 * 20 / 100"&lt;/span&gt; | bc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;produces:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;scale=2&lt;/code&gt; option controls the number of decimal places in calculations.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Comparing the Solutions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Decimal Support&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;External Command&lt;/th&gt;
&lt;th&gt;Recommended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bash &lt;code&gt;if-else&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;❌ Integer arithmetic&lt;/td&gt;
&lt;td&gt;⭐ Easy&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;✅ Practical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Good&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which Solution Should You Use?
&lt;/h3&gt;

&lt;p&gt;For a normal university practical with integer salary input, &lt;strong&gt;Solution 1&lt;/strong&gt; is the easiest and most suitable.&lt;/p&gt;

&lt;p&gt;If decimal salary values are required, use &lt;strong&gt;Solution 2 (&lt;code&gt;awk&lt;/code&gt;)&lt;/strong&gt; or &lt;strong&gt;Solution 3 (&lt;code&gt;bc&lt;/code&gt;)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Important Operators Used
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Less Than
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-lt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Greater Than
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-gt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Equal
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-eq&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-eq&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚠️ Common Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Using Assignment Instead of Comparison
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; basic &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 2: Incorrect Percentage Calculation
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 3: Forgetting DA Is More Than 100%
&lt;/h3&gt;

&lt;p&gt;The question specifies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DA = 164%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for salary below ₹50,000 and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DA = 136%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for salary above ₹50,000.&lt;/p&gt;

&lt;p&gt;Do not accidentally write &lt;code&gt;16.4%&lt;/code&gt; or &lt;code&gt;13.6%&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 4: Forgetting the Gross Salary Formula
&lt;/h3&gt;

&lt;p&gt;Remember:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gross Salary = Basic Salary + HRA + DA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 5: Ignoring the ₹50,000 Case
&lt;/h3&gt;

&lt;p&gt;The question gives:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;but does not define:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;So the script handles that case separately.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h2&gt;

&lt;p&gt;Remember the basic structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="c"&gt;# HRA 20%&lt;/span&gt;
    &lt;span class="c"&gt;# DA 164%&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="c"&gt;# HRA 15%&lt;/span&gt;
    &lt;span class="c"&gt;# DA 136%&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Percentage calculation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; percentage &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gross salary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;gross&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;+&lt;/span&gt; hra &lt;span class="o"&gt;+&lt;/span&gt; da&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📝 Quick Revision
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Salary below ₹50,000
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;164&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Salary above ₹50,000
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;hra&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;span class="nv"&gt;da&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;136&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gross Salary
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;gross&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;basic &lt;span class="o"&gt;+&lt;/span&gt; hra &lt;span class="o"&gt;+&lt;/span&gt; da&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compare Less Than
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compare Greater Than
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$basic&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 50000 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h2&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The Set H practical is a good exercise for understanding &lt;strong&gt;conditional statements, percentage calculations, user input, and arithmetic operations&lt;/strong&gt; in shell scripting.&lt;/p&gt;

&lt;p&gt;The basic logic is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read Basic Salary
       ↓
Check Salary
       ↓
Calculate HRA and DA
       ↓
Calculate Gross Salary
       ↓
Display Result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a basic university practical, the Bash &lt;code&gt;if-else&lt;/code&gt; solution is usually enough.&lt;/p&gt;

&lt;p&gt;If decimal calculations are required, &lt;code&gt;awk&lt;/code&gt; or &lt;code&gt;bc&lt;/code&gt; can be used.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What Do You Prefer?
&lt;/h2&gt;

&lt;p&gt;For salary calculations in shell scripting, which approach do you prefer?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Bash arithmetic&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/strong&gt;, or &lt;strong&gt;&lt;code&gt;bc&lt;/code&gt;&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Share your approach in the comments! 🐧💻&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;linux&lt;/code&gt; &lt;code&gt;shell&lt;/code&gt; &lt;code&gt;unix&lt;/code&gt; &lt;code&gt;beginners&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Linux Practical Set F Solution – Count Files and Directories</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Thu, 13 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-f-solution-count-files-and-directories-58l7</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-f-solution-count-files-and-directories-58l7</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set F&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;This practical focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File and directory identification&lt;/li&gt;
&lt;li&gt;Current working directory&lt;/li&gt;
&lt;li&gt;File test operators&lt;/li&gt;
&lt;li&gt;Shell loops&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Practical Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a shell script to find total number of files and total number of directories in current working directory.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The script should count the files and directories present in the &lt;strong&gt;current working directory&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important
&lt;/h3&gt;

&lt;p&gt;For this question, we are counting the &lt;strong&gt;direct contents of the current directory only&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project/
├── file1.txt
├── file2.txt
├── script.sh
├── notes/
└── programs/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files       : 3
Directories : 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Files inside &lt;code&gt;notes/&lt;/code&gt; or &lt;code&gt;programs/&lt;/code&gt; are &lt;strong&gt;not counted&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Concepts Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display current directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search files/directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-type f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Identify regular files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-type d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Identify directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;wc -l&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Count results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;for&lt;/code&gt; loop&lt;/td&gt;
&lt;td&gt;Process directory entries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Directory test&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;find&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is one of the cleanest solutions for the practical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Current Working Directory: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Files       : &lt;/span&gt;&lt;span class="nv"&gt;$files&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Directories : &lt;/span&gt;&lt;span class="nv"&gt;$directories&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Step-by-Step Explanation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Find Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.&lt;/code&gt; means the current directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-maxdepth 1&lt;/code&gt; means don't go inside subdirectories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-type f&lt;/code&gt; means search for regular files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./file1.txt
./file2.txt
./script.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 2: Count the Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;|&lt;/code&gt; is called a &lt;strong&gt;pipe&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The output of &lt;code&gt;find&lt;/code&gt; becomes the input of &lt;code&gt;wc&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;find
  ↓
pipe
  ↓
wc -l
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;wc -l&lt;/code&gt; counts the number of lines returned by &lt;code&gt;find&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Find Directories
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This finds directories in the current directory.&lt;/p&gt;

&lt;p&gt;The important part is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-mindepth 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It prevents &lt;code&gt;find&lt;/code&gt; from counting the current directory &lt;code&gt;.&lt;/code&gt; itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Example
&lt;/h2&gt;

&lt;p&gt;Suppose the current directory contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;file1.txt
file2.txt
program.sh
notes/
backup/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Current Working Directory: /home/student/linux
Total Files       : 3
Total Directories : 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Solution 2: Using Shell Loop and File Tests
&lt;/h2&gt;

&lt;p&gt;This approach is useful for understanding &lt;strong&gt;shell scripting logic&lt;/strong&gt; instead of depending mainly on &lt;code&gt;find&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0

&lt;span class="k"&gt;for &lt;/span&gt;item &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;do
    if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;files &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;directories &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;fi
done

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Current Working Directory: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Files       : &lt;/span&gt;&lt;span class="nv"&gt;$files&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Directories : &lt;/span&gt;&lt;span class="nv"&gt;$directories&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 How This Solution Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Initialize Counters
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both counters start from zero.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Loop Through Items
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;item &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;*&lt;/code&gt; represents entries in the current directory.&lt;/p&gt;

&lt;p&gt;The loop processes each item one by one.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Check for File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-f&lt;/code&gt; test returns true if the item is a regular file.&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;files &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;increases the file counter.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Check for Directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-d&lt;/code&gt; test returns true if the item is a directory.&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;directories &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;increases the directory counter.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Example
&lt;/h2&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project/
├── a.txt
├── b.txt
├── c.sh
├── notes/
└── backup/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The loop processes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a.txt     → File
b.txt     → File
c.sh      → File
notes     → Directory
backup    → Directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Current Working Directory: /home/student/project
Total Files       : 3
Total Directories : 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Solution 3: Using &lt;code&gt;find&lt;/code&gt; with &lt;code&gt;-mindepth&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;We can also count both types directly without first storing the results in variables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Current Working Directory: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Files       : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Directories : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-mindepth 1&lt;/code&gt; option ensures that the current directory itself is not counted.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Understanding &lt;code&gt;-mindepth&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can return:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;.&lt;/code&gt; represents the current directory.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;returns:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;So there is no need to subtract &lt;code&gt;1&lt;/code&gt; from the result.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Comparing the Solutions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Main Concept&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Recommended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;find&lt;/code&gt; + &lt;code&gt;wc&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Linux commands&lt;/td&gt;
&lt;td&gt;⭐ Easy&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;for&lt;/code&gt; + &lt;code&gt;-f/-d&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Shell scripting&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;find&lt;/code&gt; + &lt;code&gt;-mindepth&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;find&lt;/code&gt; options&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which Solution Should You Use?
&lt;/h3&gt;

&lt;p&gt;For the practical exam, &lt;strong&gt;Solution 1 or Solution 3&lt;/strong&gt; is very convenient.&lt;/p&gt;

&lt;p&gt;If the examiner wants to see your &lt;strong&gt;shell scripting logic&lt;/strong&gt;, Solution 2 is a better choice because it uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for
if
-f
-d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧠 Important Difference: &lt;code&gt;-maxdepth 1&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is very important for this question.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project/
├── a.txt
├── notes/
│   ├── b.txt
│   └── c.txt
└── script.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the result includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./a.txt
./notes/b.txt
./notes/c.txt
./script.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So it searches &lt;strong&gt;recursively&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;only finds:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Therefore, &lt;code&gt;-maxdepth 1&lt;/code&gt; is important when the question specifically asks for files in the &lt;strong&gt;current working directory&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Common Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Counting Recursively
&lt;/h3&gt;

&lt;p&gt;Don't use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;if the question means only the current directory.&lt;/p&gt;

&lt;p&gt;This will also count files inside subdirectories.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 2: Counting &lt;code&gt;.&lt;/code&gt; as a Directory
&lt;/h3&gt;

&lt;p&gt;This:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;includes:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;which represents the current directory.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to exclude it.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 3: Forgetting Quotes
&lt;/h3&gt;

&lt;p&gt;Prefer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nv"&gt;$item&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quotes make the script safer when file or directory names contain spaces.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h2&gt;

&lt;p&gt;Remember these important commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Find Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Find Directories
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Count Results
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check Directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Current Directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📝 Quick Revision
&lt;/h2&gt;

&lt;p&gt;The simplest command-based solution is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mindepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; d | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Files       : &lt;/span&gt;&lt;span class="nv"&gt;$files&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Directories : &lt;/span&gt;&lt;span class="nv"&gt;$directories&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The shell-loop approach is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;item &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;do
    if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;files &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;directories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;directories &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;fi
done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h2&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The Set F practical is a good exercise for understanding how Linux identifies files and directories.&lt;/p&gt;

&lt;p&gt;The most important concepts are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-type f → File
-type d → Directory
-maxdepth 1 → Do not search inside subdirectories
-mindepth 1 → Exclude the starting directory itself
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you understand these options, you can easily solve variations of this practical question.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What Do You Prefer?
&lt;/h2&gt;

&lt;p&gt;Which approach do you prefer for counting files and directories?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;find&lt;/code&gt; command&lt;/strong&gt; or &lt;strong&gt;shell &lt;code&gt;for&lt;/code&gt; loop with &lt;code&gt;-f&lt;/code&gt; and &lt;code&gt;-d&lt;/code&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Share your approach in the comments! 🐧💻&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;linux&lt;/code&gt; &lt;code&gt;shell&lt;/code&gt; &lt;code&gt;unix&lt;/code&gt; &lt;code&gt;beginners&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Linux Practical Set G Solution – Find Files Modified in Last 7 Days</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Thu, 13 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-g-solution-find-files-modified-in-last-7-days-1c0m</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-g-solution-find-files-modified-in-last-7-days-1c0m</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set G&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;This practical focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finding recently modified files&lt;/li&gt;
&lt;li&gt;File modification time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sort&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;du&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;File size&lt;/li&gt;
&lt;li&gt;Current working directory&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Practical Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a shell script to find all files in the current directory that were modified in the last 7 days and display their names and sizes.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The script should:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for files in the current directory.&lt;/li&gt;
&lt;li&gt;Find files modified within the last 7 days.&lt;/li&gt;
&lt;li&gt;Display the file names.&lt;/li&gt;
&lt;li&gt;Display the file sizes.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧠 Concepts Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command / Option&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search for files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-type f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Select regular files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-mtime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check modification time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-maxdepth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Limit search depth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sort&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sort command output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Process and format output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ls -lh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display file information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;du -h&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display file size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;stat&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display file information&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⏱️ Understanding &lt;code&gt;-mtime&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;-mtime&lt;/code&gt; option is used with &lt;code&gt;find&lt;/code&gt; to search files according to their modification time.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find files modified less than 7 complete 24-hour periods ago.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;code&gt;-&lt;/code&gt; before &lt;code&gt;7&lt;/code&gt; means &lt;strong&gt;less than 7&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Examples
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Modified within the last 1 day.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Modified within the last 7 complete 24-hour periods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; +7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Modified more than 7 complete 24-hour periods ago.&lt;/p&gt;

&lt;p&gt;For this practical, we use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚠️ Important: &lt;code&gt;-mtime&lt;/code&gt; Uses 24-Hour Periods
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;find -mtime&lt;/code&gt; works with complete &lt;strong&gt;24-hour periods&lt;/strong&gt;, not simply calendar dates.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means files whose age is less than 7 complete 24-hour periods.&lt;/p&gt;

&lt;p&gt;If an exact time-based 7-day window is required, &lt;code&gt;-mmin&lt;/code&gt; can be used.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;find&lt;/code&gt; and &lt;code&gt;ls&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is one of the simplest solutions for the practical examination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Files modified in the last 7 days:"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------------"&lt;/span&gt;

find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Searches from the current directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;prevents the search from going inside subdirectories.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-type&lt;/span&gt; f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;selects regular files only.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;selects files modified within the last 7 complete 24-hour periods.&lt;/p&gt;

&lt;p&gt;Finally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;runs &lt;code&gt;ls -lh&lt;/code&gt; for every matching file.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Example Output
&lt;/h2&gt;

&lt;p&gt;Suppose the current directory contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;notes.txt
program.sh
old.txt
data.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and three files were modified within the last 7 days.&lt;/p&gt;

&lt;p&gt;The output may look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files modified in the last 7 days:
-----------------------------------
-rw-r--r-- 1 user user 2.1K Aug  8 09:30 ./notes.txt
-rwxr-xr-x 1 user user 1.5K Aug  7 16:20 ./program.sh
-rw-r--r-- 1 user user 8.4K Aug  6 11:45 ./data.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact permissions, dates, owner, and sizes depend on the system.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Solution 2: Display Only File Name and Size
&lt;/h2&gt;

&lt;p&gt;The previous solution displays complete &lt;code&gt;ls -lh&lt;/code&gt; information.&lt;/p&gt;

&lt;p&gt;If the question specifically asks for &lt;strong&gt;file name and size&lt;/strong&gt;, we can make the output cleaner.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Files modified in the last 7 days:"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------------"&lt;/span&gt;

find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="nt"&gt;-print0&lt;/span&gt; |
&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; file
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nv"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;du&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File: &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Size: &lt;/span&gt;&lt;span class="nv"&gt;$size&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo
&lt;/span&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-print0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;separates file names using a null character.&lt;/p&gt;

&lt;p&gt;This is useful for file names containing spaces.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my notes.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can be processed safely.&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;du&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gets the file size in human-readable format.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;4.0K    ./notes.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;cut -f1&lt;/code&gt; extracts the size.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files modified in the last 7 days:
-----------------------------------

File: ./notes.txt
Size: 4.0K

File: ./program.sh
Size: 8.0K

File: ./data.csv
Size: 12K
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Solution 3: Using &lt;code&gt;find&lt;/code&gt; and &lt;code&gt;stat&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;stat&lt;/code&gt; can be used to get the exact file size in bytes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Files modified in the last 7 days:"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------------"&lt;/span&gt;

find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="nt"&gt;-print0&lt;/span&gt; |
&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; file
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nv"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;stat&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"%s"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File: &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Size: &lt;/span&gt;&lt;span class="nv"&gt;$size&lt;/span&gt;&lt;span class="s2"&gt; bytes"&lt;/span&gt;
    &lt;span class="nb"&gt;echo
&lt;/span&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Understanding &lt;code&gt;stat&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;stat&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"%s"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;returns the file size in bytes.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;means the file size is 4096 bytes.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%s → File size in bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files modified in the last 7 days:
-----------------------------------

File: ./notes.txt
Size: 4096 bytes

File: ./program.sh
Size: 1536 bytes

File: ./data.csv
Size: 8192 bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Solution 4: Using &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt; and &lt;code&gt;awk&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is an interesting approach when we want to &lt;strong&gt;sort the files according to their modification time&lt;/strong&gt; and then display their names and sizes.&lt;/p&gt;

&lt;p&gt;Here, &lt;code&gt;find&lt;/code&gt; finds the files, &lt;code&gt;sort&lt;/code&gt; sorts the results, and &lt;code&gt;awk&lt;/code&gt; formats the output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Files modified in the last 7 days:"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------------"&lt;/span&gt;

find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-printf&lt;/span&gt; &lt;span class="s1"&gt;'%T@ %s %p\n'&lt;/span&gt; |
&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; |
&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{
    printf "File: %-25s Size: %s bytes\n", $3, $2
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Understanding the &lt;code&gt;find&lt;/code&gt; Output
&lt;/h3&gt;

&lt;p&gt;The important part is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-printf&lt;/span&gt; &lt;span class="s1"&gt;'%T@ %s %p\n'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These format specifiers mean:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%T@ → Modification timestamp
%s  → File size in bytes
%p  → File path/name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, the generated output may look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1754650200.123 2048 ./notes.txt
1754700300.456 4096 ./program.sh
1754750100.789 1024 ./data.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Sorting the Files
&lt;/h3&gt;

&lt;p&gt;The output is passed to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-n&lt;/code&gt; option performs &lt;strong&gt;numeric sorting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Since the modification timestamp is the first value, the files are sorted according to their modification time.&lt;/p&gt;

&lt;p&gt;The oldest matching file appears first.&lt;/p&gt;




&lt;h3&gt;
  
  
  Displaying the Result with &lt;code&gt;awk&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Finally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{
    printf "File: %-25s Size: %s bytes\n", $3, $2
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;formats the output.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$2 → File size
$3 → File name/path
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔄 Display Latest Modified File First
&lt;/h2&gt;

&lt;p&gt;If we want the &lt;strong&gt;most recently modified file first&lt;/strong&gt;, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-printf&lt;/span&gt; &lt;span class="s1"&gt;'%T@ %s %p\n'&lt;/span&gt; |
&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-nr&lt;/span&gt; |
&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{
    printf "File: %-25s Size: %s bytes\n", $3, $2
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-n → Numeric sorting
-r → Reverse order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-nr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sorts the modification timestamps from newest to oldest.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files modified in the last 7 days:
-----------------------------------
File: ./data.txt              Size: 1024 bytes
File: ./notes.txt             Size: 2048 bytes
File: ./program.sh            Size: 4096 bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact order depends on the modification timestamps.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Note About File Names with Spaces
&lt;/h2&gt;

&lt;p&gt;The simple &lt;code&gt;awk&lt;/code&gt; example above assumes that file names do not contain spaces.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my notes.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can cause fields to be split by &lt;code&gt;awk&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For robust scripts, the &lt;code&gt;-print0&lt;/code&gt; + &lt;code&gt;read -d ''&lt;/code&gt; approach from &lt;strong&gt;Solution 2&lt;/strong&gt; is safer.&lt;/p&gt;

&lt;p&gt;For a basic university practical, however, the &lt;code&gt;find + sort + awk&lt;/code&gt; approach is useful for demonstrating how Linux commands can be combined.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Understanding the Command Flow
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;sort&lt;/code&gt; solution follows this pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;find
  ↓
Find files modified in last 7 days
  ↓
-printf
  ↓
Generate timestamp + size + filename
  ↓
sort
  ↓
Sort by modification timestamp
  ↓
awk
  ↓
Format the output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a good example of combining multiple Linux commands using a &lt;strong&gt;pipeline&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Comparing the Solutions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Main Commands&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Recommended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Solution 1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;find + ls&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full file information&lt;/td&gt;
&lt;td&gt;⭐&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solution 2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;find + du&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name + readable size&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solution 3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;find + stat&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name + size in bytes&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;✅ Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solution 4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;find + sort + awk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sorted name + size&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;🔥 Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which Solution Should You Use?
&lt;/h3&gt;

&lt;p&gt;For a practical examination:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beginner-friendly:&lt;/strong&gt; Solution 1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only name and readable size:&lt;/strong&gt; Solution 2&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size in bytes:&lt;/strong&gt; Solution 3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to demonstrate &lt;code&gt;sort&lt;/code&gt; + &lt;code&gt;awk&lt;/code&gt;:&lt;/strong&gt; Solution 4&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Important Difference: &lt;code&gt;-mtime&lt;/code&gt; vs &lt;code&gt;-mmin&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;find&lt;/code&gt; provides both &lt;code&gt;-mtime&lt;/code&gt; and &lt;code&gt;-mmin&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using &lt;code&gt;-mtime&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works with complete 24-hour periods.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using &lt;code&gt;-mmin&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mmin&lt;/span&gt; &lt;span class="nt"&gt;-10080&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;7 days × 24 hours × 60 minutes = 10080 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-mmin&lt;/code&gt; can be useful when a minute-based time range is required.&lt;/p&gt;

&lt;p&gt;For this practical, &lt;code&gt;-mtime -7&lt;/code&gt; is the straightforward solution.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Current Directory vs Recursive Search
&lt;/h2&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current Directory Only
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This searches only the current directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current Directory and Subdirectories
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This searches recursively.&lt;/p&gt;

&lt;p&gt;Since the question specifically says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;in the current directory&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;we use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚠️ Common Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Forgetting &lt;code&gt;-type f&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Don't use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;because the result can include directories.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 2: Searching Inside Subdirectories
&lt;/h3&gt;

&lt;p&gt;Don't use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;if only the current directory should be searched.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 3: Using &lt;code&gt;-mtime 7&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;These are different:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-mtime 7&lt;/code&gt; refers to a particular 24-hour age bucket.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-mtime -7&lt;/code&gt; means less than 7 complete 24-hour periods old.&lt;/p&gt;

&lt;p&gt;For "modified in the last 7 days", &lt;code&gt;-mtime -7&lt;/code&gt; is generally the intended approach.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 4: Confusing &lt;code&gt;sort -n&lt;/code&gt; and &lt;code&gt;sort -nr&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sorts numeric values in ascending order.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-nr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sorts numeric values in descending order.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sort -n  → Older → Newer
sort -nr → Newer → Older
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 5: Parsing &lt;code&gt;ls&lt;/code&gt; Carelessly
&lt;/h3&gt;

&lt;p&gt;Commands such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can become unreliable when file names contain spaces or special characters.&lt;/p&gt;

&lt;p&gt;For safer file-name handling, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find ... &lt;span class="nt"&gt;-print0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h2&gt;

&lt;p&gt;Remember this basic command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.             → Current directory
-maxdepth 1   → Do not enter subdirectories
-type f       → Files only
-mtime -7     → Modified within the last 7 complete days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For human-readable file size:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; filename
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;du&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; filename
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For file size in bytes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;stat&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"%s"&lt;/span&gt; filename
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For sorting numeric values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For reverse numeric sorting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-nr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📝 Quick Revision
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Find recently modified files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Find files and display information
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt; &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Get human-readable size
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;du&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Get size in bytes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;stat&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"%s"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sort by modification timestamp
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sort newest first
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-nr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h2&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The Set G practical is a useful exercise for learning how Linux can search files based on their &lt;strong&gt;modification time&lt;/strong&gt; and display their sizes.&lt;/p&gt;

&lt;p&gt;The most important command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then combine it with other Linux commands depending on the required output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;find → Find files
ls   → Display file information
du   → Display readable size
stat → Display exact size
sort → Sort results
awk  → Format results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;find + sort + awk&lt;/code&gt; solution is especially useful for understanding how multiple Linux commands can work together through a pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What Do You Prefer?
&lt;/h2&gt;

&lt;p&gt;For finding recently modified files, which approach do you prefer?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;find + ls&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;find + du&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;find + stat&lt;/code&gt;&lt;/strong&gt;, or the &lt;strong&gt;&lt;code&gt;find + sort + awk&lt;/code&gt;&lt;/strong&gt; approach?&lt;/p&gt;

&lt;p&gt;Share your approach in the comments! 🐧💻&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;linux&lt;/code&gt; &lt;code&gt;shell&lt;/code&gt; &lt;code&gt;unix&lt;/code&gt; &lt;code&gt;beginners&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>shell</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Linux Practical Set D Solution – File Operations &amp; Text Processing</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Wed, 12 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-d-solution-file-operations-text-processing-45p1</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-d-solution-file-operations-text-processing-45p1</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set D&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;This practical focuses on basic &lt;strong&gt;file handling and text-processing commands&lt;/strong&gt; such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;head&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Practical Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a shell script to perform following:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Create a file named &lt;code&gt;marks.txt&lt;/code&gt; and insert 5 lines of text.&lt;/li&gt;
&lt;li&gt;Display the first 3 lines of &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Display the last 2 lines of &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Count the number of words, lines, and characters in &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Search for the word &lt;strong&gt;Linux&lt;/strong&gt; in &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧠 Commands Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create and display file content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;head&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display the beginning of a file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display the end of a file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Count lines, words, and characters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search for text&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;head&lt;/code&gt;, &lt;code&gt;tail&lt;/code&gt;, &lt;code&gt;wc&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This solution takes &lt;strong&gt;5 lines interactively from the user&lt;/strong&gt; and stores them in &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter 5 lines of text:"&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; marks.txt

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt; i&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;5&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Enter line &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;: "&lt;/span&gt; line
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; marks.txt
&lt;span class="k"&gt;done

&lt;/span&gt;&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- First 3 Lines -----"&lt;/span&gt;
&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 3 marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- Last 2 Lines -----"&lt;/span&gt;
&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 2 marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- File Statistics -----"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lines      : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Words      : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Characters : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- Searching for Linux -----"&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Step-by-Step Explanation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create or Empty the File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates &lt;code&gt;marks.txt&lt;/code&gt; if it does not exist.&lt;/p&gt;

&lt;p&gt;If the file already exists, its previous content is removed.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Take 5 Lines from the User
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt; i&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;5&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Enter line &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;: "&lt;/span&gt; line
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; marks.txt
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The loop runs exactly &lt;strong&gt;5 times&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter line 1: Linux is an operating system
Enter line 2: Linux supports shell scripting
Enter line 3: Shell commands are useful
Enter line 4: Unix and Linux are related
Enter line 5: Linux is widely used
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each line is appended to &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt; operator is used to append content to the file.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Display First 3 Lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 3 marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;head&lt;/code&gt; command displays the beginning of a file.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-n 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Display the first 3 lines.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 4: Display Last 2 Lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 2 marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;tail&lt;/code&gt; command displays the end of a file.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-n 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Display the last 2 lines.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 5: Count Lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-l&lt;/code&gt; option counts the number of lines.&lt;/p&gt;

&lt;p&gt;For our five-line file:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;&amp;lt;&lt;/code&gt; redirects the file content to &lt;code&gt;wc&lt;/code&gt;, so only the number is displayed.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 6: Count Words
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; &amp;lt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-w&lt;/code&gt; option counts the number of words in the file.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Count Characters
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-m&lt;/code&gt; option counts the number of characters.&lt;/p&gt;

&lt;p&gt;This is preferable to plain &lt;code&gt;wc&lt;/code&gt; when the question specifically asks for &lt;strong&gt;characters&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 8: Search for Linux
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;grep&lt;/code&gt; command searches for the word or pattern &lt;code&gt;Linux&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It displays every line containing &lt;code&gt;Linux&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Sample Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter 5 lines of text:
Enter line 1: Linux is an operating system
Enter line 2: Linux supports shell scripting
Enter line 3: Shell commands are useful
Enter line 4: Unix and Linux are related
Enter line 5: Linux is widely used

----- First 3 Lines -----
Linux is an operating system
Linux supports shell scripting
Shell commands are useful

----- Last 2 Lines -----
Unix and Linux are related
Linux is widely used

----- File Statistics -----
Lines      : 5
Words      : 24
Characters : 142

----- Searching for Linux -----
Linux is an operating system
Linux supports shell scripting
Unix and Linux are related
Linux is widely used
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The exact word and character counts will depend on the text entered by the user.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔄 Solution 2: Using &lt;code&gt;cat&lt;/code&gt; to Insert 5 Lines
&lt;/h2&gt;

&lt;p&gt;The question can also be solved using &lt;code&gt;cat&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter 5 lines of text:"&lt;/span&gt;

&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- First 3 Lines -----"&lt;/span&gt;
&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 3 marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- Last 2 Lines -----"&lt;/span&gt;
&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 2 marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- File Statistics -----"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lines      : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Words      : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Characters : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- Searching for Linux -----"&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After entering the five lines, press:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ctrl + D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to finish the input.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which Method Is Better?
&lt;/h3&gt;

&lt;p&gt;For beginners, &lt;strong&gt;Solution 1&lt;/strong&gt; is easier to understand because it clearly shows the five iterations of the loop.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;cat&lt;/code&gt; method is shorter and demonstrates interactive file creation using &lt;code&gt;cat&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Solution 3: Automatically Create the File Using Here Document
&lt;/h2&gt;

&lt;p&gt;If you don't want the user to enter the five lines manually, you can use a &lt;strong&gt;here document&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; marks.txt &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
Linux is an operating system
Linux supports shell scripting
Shell commands are useful
Unix and Linux are related
Linux is widely used
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"----- First 3 Lines -----"&lt;/span&gt;
&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 3 marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- Last 2 Lines -----"&lt;/span&gt;
&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 2 marks.txt

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- File Statistics -----"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lines      : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Words      : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Characters : &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo
echo&lt;/span&gt; &lt;span class="s2"&gt;"----- Searching for Linux -----"&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;allows multiple lines of text to be provided as input to the command.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;EOF&lt;/code&gt; at the end marks the end of the input.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Searching for Linux Case-Insensitively
&lt;/h2&gt;

&lt;p&gt;By default:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is &lt;strong&gt;case-sensitive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Therefore, these are treated differently:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Linux
linux
LINUX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the search should ignore uppercase/lowercase differences, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-i&lt;/code&gt; option makes the search case-insensitive.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Alternative: Using &lt;code&gt;sed&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Although &lt;code&gt;head&lt;/code&gt; and &lt;code&gt;tail&lt;/code&gt; are the simplest commands for this question, &lt;code&gt;sed&lt;/code&gt; can also be used.&lt;/p&gt;

&lt;h3&gt;
  
  
  First 3 Lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'1,3p'&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-n&lt;/code&gt; → Suppresses automatic output&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;1,3&lt;/code&gt; → Lines 1 to 3&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;p&lt;/code&gt; → Print&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Last 2 Lines
&lt;/h3&gt;

&lt;p&gt;We can calculate the total number of lines first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;total&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; marks.txt&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;total &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;total&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;p"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, for this practical, &lt;code&gt;head&lt;/code&gt; and &lt;code&gt;tail&lt;/code&gt; are simpler and easier to remember.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Important Commands at a Glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create/empty file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Append text&lt;/td&gt;
&lt;td&gt;&lt;code&gt;echo "text" &amp;gt;&amp;gt; marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;First 3 lines&lt;/td&gt;
&lt;td&gt;&lt;code&gt;head -n 3 marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Last 2 lines&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tail -n 2 marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Count lines&lt;/td&gt;
&lt;td&gt;&lt;code&gt;wc -l marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Count words&lt;/td&gt;
&lt;td&gt;&lt;code&gt;wc -w marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Count characters&lt;/td&gt;
&lt;td&gt;&lt;code&gt;wc -m marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search Linux&lt;/td&gt;
&lt;td&gt;&lt;code&gt;grep "Linux" marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Case-insensitive search&lt;/td&gt;
&lt;td&gt;&lt;code&gt;grep -i "Linux" marks.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧠 Why Use &lt;code&gt;wc -m&lt;/code&gt; for Characters?
&lt;/h2&gt;

&lt;p&gt;A common mistake is to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc &lt;/span&gt;marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and assume that the third value is the character count.&lt;/p&gt;

&lt;p&gt;By default, &lt;code&gt;wc&lt;/code&gt; generally displays:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lines words bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Therefore, when the question specifically asks for &lt;strong&gt;characters&lt;/strong&gt;, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the intention of the script clear.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Common Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Using &lt;code&gt;&amp;gt;&lt;/code&gt; Instead of &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;overwrites the file every time.&lt;/p&gt;

&lt;p&gt;Therefore, after the loop only the last line would remain.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$line&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to append each line.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 2: Using &lt;code&gt;wc&lt;/code&gt; for Character Count
&lt;/h3&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc &lt;/span&gt;marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;when you specifically need the character count.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 3: Forgetting Case Sensitivity
&lt;/h3&gt;

&lt;p&gt;This:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;does not necessarily match:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;linux
LINUX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;when a case-insensitive search is required.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h2&gt;

&lt;p&gt;Remember these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 3 marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ First 3 lines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 2 marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Last 2 lines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Number of lines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Number of words&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Number of characters&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Linux"&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Search for Linux&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h2&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Set D is an important Linux practical because it combines several commonly used file and text-processing commands in one shell script.&lt;/p&gt;

&lt;p&gt;The main commands to remember are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat   → File creation/input
head  → Beginning of file
tail  → End of file
wc    → Counting
grep  → Searching
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Practice these commands individually first and then combine them into the complete shell script.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What Do You Prefer?
&lt;/h2&gt;

&lt;p&gt;For displaying specific lines from a file, which approach do you prefer?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;head&lt;/code&gt; / &lt;code&gt;tail&lt;/code&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;code&gt;sed&lt;/code&gt;&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Share your approach in the comments! 🐧💻&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;linux&lt;/code&gt; &lt;code&gt;shell&lt;/code&gt; &lt;code&gt;unix&lt;/code&gt; &lt;code&gt;beginners&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>shell</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Linux Practical Set E Solution – Display Lines from a File with Validation</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Wed, 12 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-e-solution-display-lines-from-a-file-with-validation-1go9</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-e-solution-display-lines-from-a-file-with-validation-1go9</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set E&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;This practical focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Command-line arguments&lt;/li&gt;
&lt;li&gt;File validation&lt;/li&gt;
&lt;li&gt;Numeric validation&lt;/li&gt;
&lt;li&gt;Line range validation&lt;/li&gt;
&lt;li&gt;Displaying specific lines from a file&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;head&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Practical Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a shell script that will pass file name and two numbers a1 and a2. Display line a1 to a2 from that file. [Proper validation required]&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The script should accept:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;filename
a1 = starting line number
a2 = ending line number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 3 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should display lines &lt;strong&gt;3 to 7&lt;/strong&gt; from &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Are Command-Line Arguments?
&lt;/h2&gt;

&lt;p&gt;When a shell script is executed, values can be passed directly from the command line.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 3 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Argument&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Script name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Starting line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ending line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$#&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Number of arguments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$1 = marks.txt
$2 = 3
$3 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;sed&lt;/code&gt; with Proper Validation
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;sed&lt;/code&gt; is a very suitable command for displaying a specific range of lines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Check number of arguments&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 3 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;file&amp;gt; &amp;lt;start_line&amp;gt; &amp;lt;end_line&amp;gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;

&lt;span class="c"&gt;# Check whether file exists&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: File does not exist."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Check whether file is readable&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: File is not readable."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Check whether a1 is a positive integer&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Starting line must be a positive integer."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Check whether a2 is a positive integer&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Ending line must be a positive integer."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Check line range&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Starting line must be less than or equal to ending line."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Check whether starting line exists&lt;/span&gt;
&lt;span class="nv"&gt;total_lines&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$total_lines&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Starting line is beyond the end of the file."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Displaying lines &lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt; from &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;:"&lt;/span&gt;
&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;p"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Step-by-Step Explanation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Validate Number of Arguments
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 3 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script requires exactly &lt;strong&gt;3 arguments&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. File name
2. Starting line
3. Ending line
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 3 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the user enters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the script displays the correct usage and exits.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Store Arguments in Variables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the values are easier to understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;file → marks.txt
a1   → 3
a2   → 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 3: Check File Existence
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-f&lt;/code&gt; test checks whether the given path is a regular file.&lt;/p&gt;

&lt;p&gt;If the file does not exist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: File does not exist.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the script stops.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Check File Read Permission
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-r&lt;/code&gt; test checks whether the file is readable.&lt;/p&gt;

&lt;p&gt;This prevents the script from trying to read a file that the current user cannot access.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Validate Starting Line
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This checks that &lt;code&gt;a1&lt;/code&gt; contains a positive integer.&lt;/p&gt;

&lt;p&gt;Valid examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
5
10
100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Invalid examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0
-5
abc
2.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 6: Validate Ending Line
&lt;/h3&gt;

&lt;p&gt;The same validation is applied to &lt;code&gt;a2&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures that the ending line is also a positive integer.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Validate the Range
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The starting line cannot be greater than the ending line.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a1 = 3
a2 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is valid.&lt;/p&gt;

&lt;p&gt;But:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a1 = 7
a2 = 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is invalid.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 8: Find Total Number of Lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;total_lines&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This stores the total number of lines in the file.&lt;/p&gt;

&lt;p&gt;For example, if the file contains 20 lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;total_lines = 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 9: Check Starting Line
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$total_lines&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the requested starting line is beyond the end of the file, the script displays an error.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;File has 10 lines
a1 = 15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no line 15, so the request is invalid.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 10: Display the Required Lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;p"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a1 = 3
a2 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'3,7p'&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;prints lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
4
5
6
7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ Example File
&lt;/h2&gt;

&lt;p&gt;Suppose &lt;code&gt;marks.txt&lt;/code&gt; contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Line 1 - Linux
Line 2 - UNIX
Line 3 - Shell
Line 4 - Bash
Line 5 - Commands
Line 6 - File Handling
Line 7 - Text Processing
Line 8 - Permissions
Line 9 - Processes
Line 10 - Networking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 3 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Displaying lines 3 to 7 from marks.txt:
Line 3 - Shell
Line 4 - Bash
Line 5 - Commands
Line 6 - File Handling
Line 7 - Text Processing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ❌ Validation Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Missing Arguments
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Usage: ./script.sh &amp;lt;file&amp;gt; &amp;lt;start_line&amp;gt; &amp;lt;end_line&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  File Does Not Exist
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh abc.txt 2 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: File does not exist.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Invalid Starting Line
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt abc 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Starting line must be a positive integer.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Invalid Ending Line
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 2 xyz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Ending line must be a positive integer.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Invalid Range
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 8 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Starting line must be less than or equal to ending line.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Starting Line Beyond File
&lt;/h3&gt;

&lt;p&gt;If the file contains only 10 lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script.sh marks.txt 15 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Starting line is beyond the end of the file.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔄 Solution 2: Using &lt;code&gt;awk&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The same task can also be performed using &lt;code&gt;awk&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 3 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;file&amp;gt; &amp;lt;start_line&amp;gt; &amp;lt;end_line&amp;gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: File does not exist."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: File is not readable."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Line numbers must be positive integers."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Invalid line range."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s1"&gt;'NR &amp;gt;= start &amp;amp;&amp;amp; NR &amp;lt;= end {print}'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How &lt;code&gt;awk&lt;/code&gt; Works
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;NR&lt;/code&gt; represents the &lt;strong&gt;current record/line number&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This condition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;NR &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; start &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; NR &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt; end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Print lines whose line number is between &lt;code&gt;start&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;start = 3
end = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;awk&lt;/code&gt; prints lines 3 through 7.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Solution 3: Using &lt;code&gt;head&lt;/code&gt; and &lt;code&gt;tail&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The task can also be solved using &lt;code&gt;head&lt;/code&gt; and &lt;code&gt;tail&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 3 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;file&amp;gt; &amp;lt;start_line&amp;gt; &amp;lt;end_line&amp;gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: File does not exist."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Line numbers must be positive integers."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Invalid line range."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;a2 &lt;span class="o"&gt;-&lt;/span&gt; a1 &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$a2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a1 = 3
a2 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 7 marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gets the first 7 lines.&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gets the last 5 lines of those 7 lines.&lt;/p&gt;

&lt;p&gt;Therefore, the result is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lines 3, 4, 5, 6, 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📊 Comparing the Solutions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Main Command&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Recommended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Solution 1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;✅ Best&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solution 2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;✅ Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solution 3&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;head&lt;/code&gt; + &lt;code&gt;tail&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;Alternative&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which Solution Should You Use?
&lt;/h3&gt;

&lt;p&gt;For this practical, &lt;strong&gt;&lt;code&gt;sed&lt;/code&gt; is the cleanest solution&lt;/strong&gt; because it directly supports displaying a specific range of lines.&lt;/p&gt;

&lt;p&gt;If your syllabus focuses on &lt;code&gt;awk&lt;/code&gt;, the second solution is useful.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;head&lt;/code&gt; + &lt;code&gt;tail&lt;/code&gt; approach is good for understanding how multiple Linux commands can be combined using a pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Important Concepts Used
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Command-Line Arguments
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="nv"&gt;$3&lt;/span&gt;
&lt;span class="nv"&gt;$#&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  File Tests
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;span class="nt"&gt;-r&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Numeric Comparison
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-gt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Regular Expression Validation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$value&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ regex &lt;span class="o"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Line Processing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed
awk
head
tail&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Command Substitution
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;total_lines&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚠️ Common Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Forgetting Argument Validation
&lt;/h3&gt;

&lt;p&gt;Don't directly use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;without checking &lt;code&gt;$#&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Always make sure the required arguments are provided.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 2: Not Checking the File
&lt;/h3&gt;

&lt;p&gt;Before reading the file, check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and preferably:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Mistake 3: Allowing Invalid Line Numbers
&lt;/h3&gt;

&lt;p&gt;Values such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;abc
-5
2.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;should not be accepted as line numbers.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 4: Invalid Range
&lt;/h3&gt;

&lt;p&gt;This is invalid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a1 = 10
a2 = 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;because the starting line comes after the ending line.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 5: Forgetting Quotes Around File Names
&lt;/h3&gt;

&lt;p&gt;Prefer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;p"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;a2&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;p"&lt;/span&gt; &lt;span class="nv"&gt;$file&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quoting helps when the file name contains spaces or special characters.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h2&gt;

&lt;p&gt;Remember this basic command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'3,7p'&lt;/span&gt; marks.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It displays lines &lt;strong&gt;3 to 7&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For command-line arguments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$1&lt;/span&gt; → File
&lt;span class="nv"&gt;$2&lt;/span&gt; → Starting line
&lt;span class="nv"&gt;$3&lt;/span&gt; → Ending line
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For argument count:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$#&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For file validation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For readable file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For positive integer validation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$num&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^[1-9][0-9]&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h2&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Set E is an excellent practical for learning &lt;strong&gt;command-line arguments and input validation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The main logic is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Validate arguments
      ↓
Validate file
      ↓
Validate line numbers
      ↓
Validate line range
      ↓
Display required lines
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Among the different approaches, &lt;code&gt;sed&lt;/code&gt; provides the most direct solution for displaying a range of lines.&lt;/p&gt;

&lt;p&gt;Practice the validation carefully because the question specifically mentions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Proper validation required.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💬 What Do You Prefer?
&lt;/h2&gt;

&lt;p&gt;For displaying a range of lines from a file, which approach do you prefer?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;sed&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/strong&gt;, or &lt;strong&gt;&lt;code&gt;head + tail&lt;/code&gt;&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Share your approach in the comments! 🐧💻&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;linux&lt;/code&gt; &lt;code&gt;shell&lt;/code&gt; &lt;code&gt;unix&lt;/code&gt; &lt;code&gt;beginners&lt;/code&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>sed</category>
    </item>
    <item>
      <title>Linux Practical Set C Solution – Palindrome String</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Tue, 11 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-c-solution-palindrome-string-4h9b</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-c-solution-palindrome-string-4h9b</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set C&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;We will learn how to check whether a given string is a &lt;strong&gt;palindrome or not&lt;/strong&gt; using different shell scripting approaches.&lt;/p&gt;




&lt;h1&gt;
  
  
  📌 Practical Question
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a script to check whether a given string is palindrome or not.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  🧠 What is a Palindrome?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;palindrome&lt;/strong&gt; is a word or string that reads the same from left to right and right to left.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;madam
level
radar
racecar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;madam → madam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the original string and reversed string are the same, &lt;code&gt;madam&lt;/code&gt; is a palindrome.&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-Palindrome Examples
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello
linux
computer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello → olleh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since they are different, &lt;code&gt;hello&lt;/code&gt; is not a palindrome.&lt;/p&gt;




&lt;h1&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;for&lt;/code&gt; Loop
&lt;/h1&gt;

&lt;p&gt;This solution checks the string character by character and builds its reverse.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a string:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;str

&lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; i&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt; i--&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nv"&gt;ch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$i&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;
    &lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse$ch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Original String : &lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Reverse String  : &lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"String is Palindrome"&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"String is Not Palindrome"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 Explanation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Take Input
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;read &lt;/span&gt;str
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user-entered string is stored in the variable &lt;code&gt;str&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Initialize Reverse String
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We start with an empty string.&lt;/p&gt;

&lt;p&gt;Characters will be added to this variable one by one.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Find String Length
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns the number of characters in the string.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 characters
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Therefore, the last character is at index:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;because Bash string indexing starts from &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Loop from Last Character to First
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; i&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt; i--&lt;span class="o"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;the indexes are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;m → 0
a → 1
d → 2
a → 3
m → 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The loop starts from &lt;code&gt;4&lt;/code&gt; and moves toward &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So the characters are read as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;m
a
d
a
m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 5: Extract One Character
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$i&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This extracts one character from the string.&lt;/p&gt;

&lt;p&gt;The general syntax is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;string&lt;/span&gt;:start:length&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:2:1&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Start at index &lt;code&gt;2&lt;/code&gt; and extract &lt;code&gt;1&lt;/code&gt; character.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 6: Build the Reverse
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse$ch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each extracted character is added to the &lt;code&gt;reverse&lt;/code&gt; variable.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Original: hello

Reverse building:

o
ol
oll
olle
olleh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 7: Compare Strings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the original string and reversed string are equal, the string is a palindrome.&lt;/p&gt;




&lt;h1&gt;
  
  
  🖥️ Example Output
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Example 1
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a string:
madam

Original String : madam
Reverse String  : madam
String is Palindrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example 2
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a string:
hello

Original String : hello
Reverse String  : olleh
String is Not Palindrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ✅ Solution 2: Using &lt;code&gt;rev&lt;/code&gt; Command
&lt;/h1&gt;

&lt;p&gt;Linux provides a command called &lt;code&gt;rev&lt;/code&gt; that reverses characters in each line.&lt;/p&gt;

&lt;p&gt;This makes the palindrome program much shorter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a string:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;str

&lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | rev&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Original String : &lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Reverse String  : &lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"String is Palindrome"&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"String is Not Palindrome"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🔍 Understanding &lt;code&gt;rev&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"madam"&lt;/span&gt; | rev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;/div&gt;



&lt;p&gt;And:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"hello"&lt;/span&gt; | rev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;/div&gt;



&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | rev&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;stores the reversed string in the &lt;code&gt;reverse&lt;/code&gt; variable.&lt;/p&gt;

&lt;p&gt;Then we simply compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🖥️ Example Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a string:
level

Original String : level
Reverse String  : level
String is Palindrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ✅ Solution 3: Character-by-Character Comparison
&lt;/h1&gt;

&lt;p&gt;Instead of creating a separate reverse string, we can compare characters from both ends.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a string:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;str

&lt;span class="nv"&gt;length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="nv"&gt;isPalindrome&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0, &lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;length-1&lt;span class="p"&gt;;&lt;/span&gt; i&amp;lt;j&lt;span class="p"&gt;;&lt;/span&gt; i++, j--&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do
    if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$i&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$j&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;isPalindrome&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
        &lt;span class="nb"&gt;break
    &lt;/span&gt;&lt;span class="k"&gt;fi
done

if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$isPalindrome&lt;/span&gt; &lt;span class="nt"&gt;-eq&lt;/span&gt; 1 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"String is Palindrome"&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"String is Not Palindrome"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🔍 How This Solution Works
&lt;/h1&gt;

&lt;p&gt;Suppose the input is:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The script compares:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;m ↔ m
a ↔ a
d ↔ d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All characters match, so the string is a palindrome.&lt;/p&gt;

&lt;p&gt;For:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;the first comparison is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h ↔ o
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They are different, so the script immediately stops.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This avoids unnecessary comparisons.&lt;/p&gt;




&lt;h1&gt;
  
  
  📊 Comparing the Solutions
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Extra Command&lt;/th&gt;
&lt;th&gt;Good for Practical&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;for&lt;/code&gt; + Reverse&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;⭐ Easy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Character Comparison&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;✅ Good&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which one should you use?
&lt;/h3&gt;

&lt;p&gt;For a practical examination:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beginner-friendly:&lt;/strong&gt; Use the &lt;code&gt;rev&lt;/code&gt; solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To demonstrate shell scripting logic:&lt;/strong&gt; Use the &lt;code&gt;for&lt;/code&gt; loop solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For better algorithmic understanding:&lt;/strong&gt; Use character-by-character comparison.&lt;/p&gt;




&lt;h1&gt;
  
  
  📝 Quick Revision
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Reverse using &lt;code&gt;rev&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | rev&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  String length
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Extract one character
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$i&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compare strings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$reverse&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Break the loop
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ⚠️ Important Note About Spaces and Case
&lt;/h1&gt;

&lt;p&gt;The basic solutions above treat the input as a normal string.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;is &lt;strong&gt;not&lt;/strong&gt; considered the same as:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;because uppercase and lowercase characters are different.&lt;/p&gt;

&lt;p&gt;Similarly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nurses run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;contains a space, so it is different from:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If the practical specifically requires &lt;strong&gt;case-insensitive palindrome checking&lt;/strong&gt; or &lt;strong&gt;ignoring spaces&lt;/strong&gt;, the script needs a small modification.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h1&gt;

&lt;p&gt;Remember these important points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A palindrome is the same when read forward and backward.&lt;/li&gt;
&lt;li&gt;Bash string indexes start from &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;${#str}&lt;/code&gt; gives the string length.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;${str:$i:1}&lt;/code&gt; extracts a character.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rev&lt;/code&gt; can reverse a string quickly.&lt;/li&gt;
&lt;li&gt;Always quote string variables when comparing them.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;break&lt;/code&gt; can stop the loop as soon as a mismatch is found.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h1&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🐧 Conclusion
&lt;/h1&gt;

&lt;p&gt;The &lt;strong&gt;Palindrome String&lt;/strong&gt; practical is a simple but important shell scripting exercise.&lt;/p&gt;

&lt;p&gt;It helps students understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strings&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;String indexing&lt;/li&gt;
&lt;li&gt;Conditions&lt;/li&gt;
&lt;li&gt;Command substitution&lt;/li&gt;
&lt;li&gt;Linux commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try writing the program yourself using the &lt;code&gt;for&lt;/code&gt; loop approach first. After understanding the logic, try the shorter &lt;code&gt;rev&lt;/code&gt; version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Learning &amp;amp; Best of Luck for your Linux Practical! 🐧💻&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>vnsgu</category>
      <category>gtu</category>
      <category>palindrome</category>
    </item>
    <item>
      <title>GSEB Std 11 Computer Chapter 1 MCQ Solutions English Medium 2026 New Textbook</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Mon, 10 Aug 2026 05:42:48 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/gseb-std-11-computer-chapter-1-mcq-solutions-english-medium-2026-new-textbook-3pf</link>
      <guid>https://dev.to/teamworkfahad/gseb-std-11-computer-chapter-1-mcq-solutions-english-medium-2026-new-textbook-3pf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gujarat Board Std 11 Computer – English Medium&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Chapter 1 – Introduction to Database Management System&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Textbook Swadhyay – MCQ Solutions&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  📚 Chapter 1: Introduction to Database Management System
&lt;/h2&gt;

&lt;p&gt;As per the &lt;strong&gt;new Gujarat Board syllabus introduced from 2026&lt;/strong&gt;, Chapter 1 of Std 11 Computer is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction to Database Management System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this article, we have covered all &lt;strong&gt;10 textbook MCQs&lt;/strong&gt; from the Chapter 1 Swadhyay along with their &lt;strong&gt;correct answers and short explanations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These questions are useful for students preparing for their &lt;strong&gt;GSEB Std 11 Computer examination and quick revision&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Textbook MCQ Solutions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Question 1: Which of the following is the full form of DBMS?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) Data Block Management System&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(b) Database Management System&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(c) Data Byte Management System&lt;/li&gt;
&lt;li&gt;(d) Data Bit Management System&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (b) Database Management System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
DBMS stands for &lt;strong&gt;Database Management System&lt;/strong&gt;. It is a software application that acts as a bridge between users and databases and helps users manage database information.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 2: Which of the following terms refers to processed data?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;(a) Information&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(b) Raw&lt;/li&gt;
&lt;li&gt;(c) Facts&lt;/li&gt;
&lt;li&gt;(d) Field&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (a) Information&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Information&lt;/strong&gt; is processed data. Raw data is transformed through processing to become structured, relevant, and meaningful information.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 3: Which of the following is not a data model?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) Flat&lt;/li&gt;
&lt;li&gt;(b) Relational&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) Rotational&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) Both (a) and (b)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (c) Rotational&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
DBMS supports different data models such as &lt;strong&gt;Hierarchical, Network, Relational, Flat, Semi-structured, Associative, and Context&lt;/strong&gt; models. &lt;strong&gt;Rotational&lt;/strong&gt; is not a valid data model.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 4: Which of the following best describes a StudentName in Database?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) Relationship&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(b) Attribute&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(c) Entity&lt;/li&gt;
&lt;li&gt;(d) Data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (b) Attribute&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
A &lt;strong&gt;Field&lt;/strong&gt; or &lt;strong&gt;Attribute&lt;/strong&gt; represents a specific piece of data that describes a characteristic of an entity. For example, &lt;strong&gt;StudentName&lt;/strong&gt; is an attribute of the Student entity.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 5: Which of the following is not a database?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) MySQL&lt;/li&gt;
&lt;li&gt;(b) LibreOffice Base&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) LibreOffice Impress&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) SQL Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (c) LibreOffice Impress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;MySQL, LibreOffice Base, and SQL Server&lt;/strong&gt; are database systems. &lt;strong&gt;LibreOffice Impress&lt;/strong&gt; is presentation software used to create presentations, not a database system.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 6: Which of the following is not a general component of the database?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;(a) Chart&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(b) Table&lt;/li&gt;
&lt;li&gt;(c) Queries&lt;/li&gt;
&lt;li&gt;(d) Form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (a) Chart&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
The four basic database objects or components are &lt;strong&gt;Tables, Queries, Forms, and Reports&lt;/strong&gt;. A &lt;strong&gt;Chart&lt;/strong&gt; is not one of these core database components.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 7: Which of the following data types is used to store an image in a Base database?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) Text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(b) Binary&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(c) Boolean&lt;/li&gt;
&lt;li&gt;(d) Byte&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (b) Binary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Binary&lt;/strong&gt; data types, such as &lt;code&gt;LONGVARBINARY&lt;/code&gt;, can be used to store digitized images, videos, or sound files in a database.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 8: In which of the following forms, can a data not be represented?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) Text&lt;/li&gt;
&lt;li&gt;(b) Numeric&lt;/li&gt;
&lt;li&gt;(c) Alphanumeric&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(d) Picture&lt;/strong&gt; ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (d) Picture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
In a database or spreadsheet table, a data value in a &lt;strong&gt;cell&lt;/strong&gt; is generally represented as &lt;strong&gt;Text, Numeric, or Alphanumeric&lt;/strong&gt; data. A &lt;strong&gt;Picture&lt;/strong&gt; is usually treated as a separate object rather than a regular data value stored in a cell.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 9: Which of the following is a feature that allows us to enter data in a table in an easy and user friendly manner?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) Report&lt;/li&gt;
&lt;li&gt;(b) Query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) Form&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) Field&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (c) Form&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
A &lt;strong&gt;Form&lt;/strong&gt; provides a customized and user-friendly graphical interface (GUI) that makes it easier to &lt;strong&gt;add, edit, and delete records&lt;/strong&gt; in a table.&lt;/p&gt;




&lt;h3&gt;
  
  
  Question 10: Which of the following cannot be used to store numbers?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) TINYINT&lt;/li&gt;
&lt;li&gt;(b) DOUBLE&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) DATE&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) CHAR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Correct Answer: (c) DATE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;br&gt;
The &lt;strong&gt;DATE&lt;/strong&gt; data type is used to store calendar dates, such as &lt;code&gt;YYYY-MM-DD&lt;/code&gt;. &lt;code&gt;TINYINT&lt;/code&gt; and &lt;code&gt;DOUBLE&lt;/code&gt; are numeric data types, while &lt;code&gt;CHAR&lt;/code&gt; can store numbers as characters.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Chapter 1 Video Playlist
&lt;/h2&gt;

&lt;p&gt;Want to learn this chapter through video lessons?&lt;/p&gt;

&lt;p&gt;You can also watch the &lt;strong&gt;Chapter 1 YouTube Playlist&lt;/strong&gt; for a better understanding of the concepts.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.youtube.com/playlist?list=PLFdaOcyORIfs" rel="noopener noreferrer"&gt;GSEB Std 11 Computer – Chapter 1 Video Playlist&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The video lessons can help students understand the concepts more easily and prepare better for their exams.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Quick Revision – Answer Key
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Correct Answer&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;(b) Database Management System&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;(a) Information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;(c) Rotational&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;(b) Attribute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;(c) LibreOffice Impress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;(a) Chart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;(b) Binary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;(d) Picture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;(c) Form&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;(c) DATE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;In this article, we covered all &lt;strong&gt;10 textbook MCQs&lt;/strong&gt; from &lt;strong&gt;GSEB Std 11 Computer – Chapter 1: Introduction to Database Management System&lt;/strong&gt;, along with their correct answers and short explanations.&lt;/p&gt;

&lt;p&gt;These MCQs can be used for &lt;strong&gt;quick revision and exam preparation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you are preparing for the GSEB Std 11 Computer exam, you can also check the upcoming articles for &lt;strong&gt;important questions, extra MCQs, practice questions, and quizzes&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Your Feedback Matters!
&lt;/h2&gt;

&lt;p&gt;If you find any &lt;strong&gt;mistake, missing information, or something that can be improved&lt;/strong&gt; in this article, please let us know in the comments.&lt;/p&gt;

&lt;p&gt;You can share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❓ If any answer seems incorrect.&lt;/li&gt;
&lt;li&gt;💡 If any topic needs a simpler explanation.&lt;/li&gt;
&lt;li&gt;📚 Which Chapter or topic you want next.&lt;/li&gt;
&lt;li&gt;📝 Whether you want more MCQs, Practice Questions, or Quizzes.&lt;/li&gt;
&lt;li&gt;👨‍🏫 Students, Teachers, and Parents — everyone is welcome to share their feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Your one comment can help us create better and more useful educational content. ❤️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👇 &lt;strong&gt;Share your feedback in the comments!&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🏷️ Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#gujaratboard&lt;/code&gt; &lt;code&gt;#computer&lt;/code&gt; &lt;code&gt;#dbms&lt;/code&gt; &lt;code&gt;#students&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GSEB Std 11 Computer Chapter 1 MCQ Solutions Gujarati medium 2026 New Textbook</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Mon, 10 Aug 2026 05:06:29 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/gseb-std-11-computer-chapter-1-mcq-solutions-gujarati-medium-2026-new-textbook-1njb</link>
      <guid>https://dev.to/teamworkfahad/gseb-std-11-computer-chapter-1-mcq-solutions-gujarati-medium-2026-new-textbook-1njb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Gujarat Board Std 11 Computer – Gujarati Medium&lt;br&gt;
પ્રકરણ ૧ – ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમનો પરિચય&lt;br&gt;
Textbook Swadhyay – MCQ Solutions&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  📚 પ્રકરણ ૧: ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમનો પરિચય
&lt;/h2&gt;

&lt;p&gt;ગુજરાત બોર્ડના &lt;strong&gt;2026થી લાગુ થયેલા નવા અભ્યાસક્રમ&lt;/strong&gt; મુજબ ધોરણ 11 કોમ્પ્યુટર વિષયના પ્રકરણ 1નું નામ &lt;strong&gt;"ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમનો પરિચય"&lt;/strong&gt; છે.&lt;/p&gt;

&lt;p&gt;આ લેખમાં આ પ્રકરણના પાઠ્યપુસ્તકના સ્વાધ્યાયમાં આપેલા &lt;strong&gt;તમામ 10 બહુવિકલ્પી પ્રશ્નો (MCQs)&lt;/strong&gt; ના સાચા જવાબો અને ટૂંકી સમજૂતી આપવામાં આવી છે.&lt;/p&gt;

&lt;p&gt;આ MCQs વિદ્યાર્થીઓને &lt;strong&gt;પરીક્ષા પહેલાં Quick Revision&lt;/strong&gt; કરવામાં મદદરૂપ થશે.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Textbook MCQ Solutions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  પ્રશ્ન 1: નીચેનામાંથી કયું DBMS નું પૂરું નામ છે?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) ડેટા બ્લોક મેનેજમેન્ટ સિસ્ટમ (Data Block Management System)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(b) ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમ (Database Management System)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(c) ડેટા બાઇટ મેનેજમેન્ટ સિસ્ટમ (Data Byte Management System)&lt;/li&gt;
&lt;li&gt;(d) ડેટા બિટ મેનેજમેન્ટ સિસ્ટમ (Data Bit Management System)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (b) ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
DBMS નું પૂરું નામ &lt;strong&gt;Database Management System&lt;/strong&gt; છે. DBMS નો ઉપયોગ ડેટાબેઝમાં રહેલા ડેટાને સ્ટોર, મેનેજ અને નિયંત્રિત કરવા માટે થાય છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 2: નીચેનામાંથી કયો શબ્દ પ્રોસેસ કરેલા ડેટાનો ઉલ્લેખ કરે છે?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;(a) ઇન્ફોર્મેશન (Information)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(b) રો (Raw)&lt;/li&gt;
&lt;li&gt;(c) ફેક્ટ્સ (Facts)&lt;/li&gt;
&lt;li&gt;(d) ફીલ્ડ (Field)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (a) ઇન્ફોર્મેશન&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
કાચા ડેટા (Raw Data) પર પ્રક્રિયા કરવામાં આવે ત્યારે તે અર્થપૂર્ણ અને ઉપયોગી &lt;strong&gt;Information (માહિતી)&lt;/strong&gt; બને છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 3: નીચેનામાંથી કયું ડેટા મોડેલ નથી?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) ફ્લેટ (Flat)&lt;/li&gt;
&lt;li&gt;(b) રિલેશનલ (Relational)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) રોટેશનલ (Rotational)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) A અને B બંને&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (c) રોટેશનલ (Rotational)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Flat&lt;/strong&gt; અને &lt;strong&gt;Relational&lt;/strong&gt; ડેટા મોડેલ છે. પરંતુ &lt;strong&gt;Rotational&lt;/strong&gt; નામનું કોઈ માન્ય ડેટા મોડેલ નથી.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 4: નીચેનામાંથી કયું ડેટાબેઝમાં StudentName નું શ્રેષ્ઠ વર્ણન કરે છે?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) રિલેશનશિપ (Relationship)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(b) એટ્રિબ્યુટ (Attribute)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(c) એન્ટિટી (Entity)&lt;/li&gt;
&lt;li&gt;(d) ડેટા (Data)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (b) એટ્રિબ્યુટ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;StudentName&lt;/strong&gt; એ Student entity ની એક વિશેષતા છે. તેથી તેને &lt;strong&gt;Attribute&lt;/strong&gt; કહેવામાં આવે છે.&lt;/p&gt;

&lt;p&gt;ઉદાહરણ તરીકે Student entity ના Name, RollNo અને Address તેના attributes હોઈ શકે છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 5: નીચેનામાંથી કયું ડેટાબેઝ નથી?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) MySQL&lt;/li&gt;
&lt;li&gt;(b) લિબ્રેઓફિસ બેઝ (LibreOffice Base)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) લિબ્રેઓફિસ ઇમ્પ્રેસ (LibreOffice Impress)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) SQL સર્વર (SQL Server)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (c) લિબ્રેઓફિસ ઇમ્પ્રેસ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;MySQL, LibreOffice Base અને SQL Server&lt;/strong&gt; ડેટાબેઝ સાથે સંબંધિત સોફ્ટવેર છે. જ્યારે &lt;strong&gt;LibreOffice Impress&lt;/strong&gt; નો ઉપયોગ Presentation બનાવવા માટે થાય છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 6: નીચેનામાંથી કયું ડેટાબેઝનું સામાન્ય ઘટક નથી?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;(a) ચાર્ટ (Chart)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(b) ટેબલ (Table)&lt;/li&gt;
&lt;li&gt;(c) ક્વેરીઝ (Queries)&lt;/li&gt;
&lt;li&gt;(d) ફોર્મ (Form)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (a) ચાર્ટ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
ડેટાબેઝમાં &lt;strong&gt;Table, Query, Form અને Report&lt;/strong&gt; જેવા મુખ્ય ઘટકોનો ઉપયોગ થાય છે. &lt;strong&gt;Chart&lt;/strong&gt; ડેટાબેઝનું સામાન્ય મૂળભૂત ઘટક નથી.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 7: બેઝ ડેટાબેઝમાં ઇમેજ સ્ટોર કરવા માટે નીચેનામાંથી કઈ ડેટા ટાઇપનો ઉપયોગ થાય છે?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) ટેક્સ્ટ (Text)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(b) બાઇનરી (Binary)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(c) બૂલીયન (Boolean)&lt;/li&gt;
&lt;li&gt;(d) બાઇટ (Byte)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (b) બાઇનરી&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
Image જેવી ડિજિટલ ફાઇલોને ડેટાબેઝમાં સંગ્રહ કરવા માટે &lt;strong&gt;Binary data&lt;/strong&gt; નો ઉપયોગ કરી શકાય છે. આવી માહિતી Binary formatમાં સ્ટોર કરવામાં આવે છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 8: નીચેનામાંથી કયા સ્વરૂપમાં ડેટા વેલ્યૂ રજૂ કરી શકાતી નથી?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) ટેક્સ્ટ (Text)&lt;/li&gt;
&lt;li&gt;(b) ન્યુમેરિક (Numeric)&lt;/li&gt;
&lt;li&gt;(c) આલ્ફાન્યુમેરિક (Alphanumeric)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(d) પિક્ચર (Picture)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (d) પિક્ચર&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
ડેટા વેલ્યૂ સામાન્ય રીતે &lt;strong&gt;Text, Numeric અથવા Alphanumeric&lt;/strong&gt; સ્વરૂપમાં રજૂ કરી શકાય છે. Picture ને સામાન્ય ડેટા વેલ્યૂ તરીકે સીધી રીતે રજૂ કરવાને બદલે તેને યોગ્ય Binary formatમાં સ્ટોર કરવામાં આવે છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 9: નીચેનામાંથી કયું આપણને સરળ અને યુઝર ફ્રેન્ડલી રીતે ટેબલમાં ડેટા એન્ટર કરવાની મંજૂરી આપે છે?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) રિપોર્ટ (Report)&lt;/li&gt;
&lt;li&gt;(b) ક્વેરી (Query)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) ફોર્મ (Form)&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) ફીલ્ડ (Field)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (c) ફોર્મ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Form&lt;/strong&gt; એ યુઝર માટે સરળ interface આપે છે, જેના દ્વારા ટેબલમાં ડેટા સરળતાથી &lt;strong&gt;Enter, View અથવા Edit&lt;/strong&gt; કરી શકાય છે.&lt;/p&gt;




&lt;h3&gt;
  
  
  પ્રશ્ન 10: નીચેનામાંથી કોનો ઉપયોગ સંખ્યાઓ સ્ટોર કરવા માટે કરી શકાતો નથી?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;(a) TINYINT&lt;/li&gt;
&lt;li&gt;(b) DOUBLE&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(c) DATE&lt;/strong&gt; ✅&lt;/li&gt;
&lt;li&gt;(d) CHAR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ સાચો જવાબ: (c) DATE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;સમજૂતી:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;TINYINT&lt;/strong&gt; અને &lt;strong&gt;DOUBLE&lt;/strong&gt; સંખ્યાત્મક (Numeric) ડેટા સ્ટોર કરવા માટે વપરાય છે. &lt;strong&gt;CHAR&lt;/strong&gt; માં સંખ્યાઓને character તરીકે સ્ટોર કરી શકાય છે. જ્યારે &lt;strong&gt;DATE&lt;/strong&gt; ડેટા ટાઇપનો ઉપયોગ તારીખ સ્ટોર કરવા માટે થાય છે.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Chapter 1 Video Playlist
&lt;/h2&gt;

&lt;p&gt;જો તમે આ પ્રકરણને &lt;strong&gt;વિડિયો દ્વારા શીખવા અને સમજવા&lt;/strong&gt; માંગતા હો, તો નીચેની YouTube Playlist પણ જોઈ શકો છો.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GSEB Std 11 Computer – Chapter 1 Video Playlist&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLFdaOcyORIfs" rel="noopener noreferrer"&gt;YouTube Playlist – Chapter 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;આ Playlist દ્વારા વિદ્યાર્થીઓ પ્રકરણના topics ને વધુ સરળતાથી સમજી શકે છે અને MCQsની તૈયારી પણ કરી શકે છે.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Quick Revision – Answer Key
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;પ્રશ્ન&lt;/th&gt;
&lt;th&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;(b) Database Management System&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;(a) Information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;(c) Rotational&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;(b) Attribute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;(c) LibreOffice Impress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;(a) Chart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;(b) Binary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;(d) Picture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;(c) Form&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;(c) DATE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;આ લેખમાં &lt;strong&gt;ધોરણ 11 કોમ્પ્યુટર – પ્રકરણ 1: ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમનો પરિચય&lt;/strong&gt; ના પાઠ્યપુસ્તકના સ્વાધ્યાયમાં આપેલા તમામ &lt;strong&gt;10 MCQs&lt;/strong&gt; ના સાચા જવાબો અને ટૂંકી સમજૂતી આપવામાં આવી છે.&lt;/p&gt;

&lt;p&gt;વિદ્યાર્થીઓ આ પ્રશ્નોનો ઉપયોગ પરીક્ષા પહેલાં &lt;strong&gt;Quick Revision&lt;/strong&gt; માટે કરી શકે છે.&lt;/p&gt;

&lt;p&gt;જો તમને આ પ્રકરણના &lt;strong&gt;Important Extra MCQs, Practice Questions અથવા Quiz&lt;/strong&gt; જોઈએ, તો તે પણ આગળના લેખમાં મેળવી શકશો.&lt;/p&gt;




&lt;h3&gt;
  
  
  📚 Related Topics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GSEB Std 11 Computer Chapter 1 Notes&lt;/li&gt;
&lt;li&gt;DBMS Basics for Beginners&lt;/li&gt;
&lt;li&gt;GSEB Std 11 Computer Important Questions&lt;/li&gt;
&lt;li&gt;GSEB Std 11 Computer MCQ Practice&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; આ લેખ Gujarat Board Std 11 Computer Gujarati Medium ના 2026થી લાગુ થયેલા નવા અભ્યાસક્રમને ધ્યાનમાં રાખીને તૈયાર કરવામાં આવ્યો છે.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  💬 તમારો Feedback અમારે માટે મહત્વનો છે!
&lt;/h2&gt;

&lt;p&gt;આ લેખમાં કોઈ &lt;strong&gt;ભૂલ, માહિતીની ખામી અથવા સુધારાની જરૂરિયાત&lt;/strong&gt; જણાય તો અમને જરૂર જણાવો.&lt;/p&gt;

&lt;p&gt;તમારા Comment દ્વારા તમે નીચેની બાબતો શેર કરી શકો છો:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❓ કોઈ પ્રશ્નનો જવાબ ખોટો લાગતો હોય તો જણાવો.&lt;/li&gt;
&lt;li&gt;💡 કોઈ Topic વધુ સરળ રીતે સમજાવવો જોઈએ એવું લાગે તો જણાવો.&lt;/li&gt;
&lt;li&gt;📚 કોઈ નવા Chapter અથવા Topic માટે Article જોઈએ તો જણાવો.&lt;/li&gt;
&lt;li&gt;📝 વધુ MCQs, Practice Questions અથવા Quiz જોઈએ તો જણાવો.&lt;/li&gt;
&lt;li&gt;👨‍🏫 Teachers, Students અને Parents — દરેકનો Feedback અમારે માટે મહત્વનો છે.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;તમારો એક Comment અમને વધુ સારા અને ઉપયોગી Educational Articles બનાવવામાં મદદ કરી શકે છે. ❤️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👇 &lt;strong&gt;તમારો Feedback Comment માં જરૂર જણાવો!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏷️ Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;#gujaratboard&lt;/code&gt; &lt;code&gt;#computer&lt;/code&gt; &lt;code&gt;#dbms&lt;/code&gt; &lt;code&gt;#students&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Linux Practical Set B Solution – Vowels Count &amp; Case Conversion</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Mon, 10 Aug 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-b-solution-vowels-count-case-conversion-j9l</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-b-solution-vowels-count-case-conversion-j9l</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set B&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;We will learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Count the number of vowels in a string&lt;/li&gt;
&lt;li&gt;Convert a string into uppercase&lt;/li&gt;
&lt;li&gt;Convert a string into lowercase&lt;/li&gt;
&lt;li&gt;Perform the same task using different Linux/UNIX approaches&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  📌 Practical Question
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a script to count the number of vowels in the entered string and convert the string into upper case or lower case.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  🧠 Concepts Used
&lt;/h1&gt;

&lt;p&gt;This practical covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;read&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;String length&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt; loop&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if&lt;/code&gt; condition&lt;/li&gt;
&lt;li&gt;&lt;code&gt;case&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Bash parameter expansion&lt;/li&gt;
&lt;li&gt;String manipulation&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;for&lt;/code&gt; Loop
&lt;/h1&gt;

&lt;p&gt;This is one of the best approaches for understanding the logic behind vowel counting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a string:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;str

&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt; i&amp;lt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nv"&gt;ch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$i&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in
        &lt;/span&gt;a|e|i|o|u|A|E|I|O|U&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;count &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
            &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="k"&gt;done

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Number of vowels: &lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Uppercase: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="p"&gt;^^&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lowercase: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a string:
Hello Linux

Number of vowels: 4
Uppercase: HELLO LINUX
Lowercase: hello linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🔍 Understanding the Script
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Step 1: Take String Input
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;read &lt;/span&gt;str
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The entered string is stored in the variable &lt;code&gt;str&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Initialize Counter
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initially, the number of vowels is zero.&lt;/p&gt;

&lt;p&gt;Whenever a vowel is found, we increase the counter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;count &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 3: Find String Length
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${#&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives the number of characters in the string.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;has a length of:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 4: Get One Character
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;:&lt;span class="nv"&gt;$i&lt;/span&gt;:1&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This extracts one character from the string.&lt;/p&gt;

&lt;p&gt;For example, if:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;str = Hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then the loop extracts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;H
e
l
l
o
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;one by one.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Check for Vowels
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in
    &lt;/span&gt;a|e|i|o|u|A|E|I|O|U&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;count &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the character is one of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a e i o u
A E I O U
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the counter is increased.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 6: Convert to Uppercase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="p"&gt;^^&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This converts the string into uppercase.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HELLO LINUX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 7: Convert to Lowercase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This converts the string into lowercase.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HELLO LINUX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;${str^^}&lt;/code&gt; and &lt;code&gt;${str,,}&lt;/code&gt; are Bash parameter-expansion features and are not available in very old shells.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  ✅ Solution 2: Using &lt;code&gt;tr&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Linux provides the &lt;code&gt;tr&lt;/code&gt; command for character translation.&lt;/p&gt;

&lt;p&gt;We can use it to convert the string into uppercase/lowercase and also count vowels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a string:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;str

&lt;span class="nv"&gt;lower&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$lower&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-cd&lt;/span&gt; &lt;span class="s1"&gt;'aeiou'&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;upper&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Number of vowels: &lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Uppercase: &lt;/span&gt;&lt;span class="nv"&gt;$upper&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lowercase: &lt;/span&gt;&lt;span class="nv"&gt;$lower&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a string:
Hello Linux

Number of vowels: 4
Uppercase: HELLO LINUX
Lowercase: hello linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🔍 How &lt;code&gt;tr&lt;/code&gt; Works
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Convert to Lowercase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converts uppercase letters into lowercase.&lt;/p&gt;




&lt;h3&gt;
  
  
  Convert to Uppercase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converts lowercase letters into uppercase.&lt;/p&gt;




&lt;h3&gt;
  
  
  Remove Everything Except Vowels
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-cd&lt;/span&gt; &lt;span class="s1"&gt;'aeiou'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-c&lt;/code&gt; → complement&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-d&lt;/code&gt; → delete&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So characters other than &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;e&lt;/code&gt;, &lt;code&gt;i&lt;/code&gt;, &lt;code&gt;o&lt;/code&gt;, &lt;code&gt;u&lt;/code&gt; are removed.&lt;/p&gt;

&lt;p&gt;For:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello Linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the result becomes approximately:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;counts the remaining characters.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$lower&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-cd&lt;/span&gt; &lt;span class="s1"&gt;'aeiou'&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gives the total number of vowels.&lt;/p&gt;




&lt;h1&gt;
  
  
  ✅ Solution 3: Using &lt;code&gt;grep&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Another approach is to use &lt;code&gt;grep&lt;/code&gt; to identify vowels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a string:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;str

&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'[aeiou]'&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;upper&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;lower&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Number of vowels: &lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Uppercase: &lt;/span&gt;&lt;span class="nv"&gt;$upper&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lowercase: &lt;/span&gt;&lt;span class="nv"&gt;$lower&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a string:
Welcome to Linux

Number of vowels: 6
Uppercase: WELCOME TO LINUX
Lowercase: welcome to linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  📊 Comparing the Solutions
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Vowel Counting&lt;/th&gt;
&lt;th&gt;Case Conversion&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;for&lt;/code&gt; + &lt;code&gt;case&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Bash&lt;/td&gt;
&lt;td&gt;⭐ Easy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;tr&lt;/code&gt; + &lt;code&gt;wc&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;grep&lt;/code&gt; + &lt;code&gt;wc&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which solution should you use?
&lt;/h3&gt;

&lt;p&gt;For a &lt;strong&gt;practical examination&lt;/strong&gt;, I recommend the &lt;strong&gt;&lt;code&gt;for&lt;/code&gt; loop + &lt;code&gt;case&lt;/code&gt; solution&lt;/strong&gt; if you want to demonstrate your shell scripting logic.&lt;/p&gt;

&lt;p&gt;If the examiner expects Linux command usage, the &lt;strong&gt;&lt;code&gt;tr&lt;/code&gt; solution&lt;/strong&gt; is a very good option.&lt;/p&gt;




&lt;h1&gt;
  
  
  📝 Quick Revision
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Count vowels using loop
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in
    &lt;/span&gt;a|e|i|o|u|A|E|I|O|U&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;count &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Uppercase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="p"&gt;^^&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Lowercase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Uppercase using &lt;code&gt;tr&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Lowercase using &lt;code&gt;tr&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Count vowels using &lt;code&gt;tr&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$str&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-cd&lt;/span&gt; &lt;span class="s1"&gt;'aeiou'&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🎯 Practical Exam Tips
&lt;/h1&gt;

&lt;p&gt;While writing this program in the practical exam, remember:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initialize the vowel counter with &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check both uppercase and lowercase vowels.&lt;/li&gt;
&lt;li&gt;Use quotes around string variables when passing them to commands.&lt;/li&gt;
&lt;li&gt;Understand how &lt;code&gt;${#str}&lt;/code&gt; gives the string length.&lt;/li&gt;
&lt;li&gt;Remember that &lt;code&gt;${str^^}&lt;/code&gt; and &lt;code&gt;${str,,}&lt;/code&gt; are Bash-specific features.&lt;/li&gt;
&lt;li&gt;If you want a more portable command-based approach, use &lt;code&gt;tr&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  📚 Related Linux Practical Sets
&lt;/h1&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; solution series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Set A&lt;/strong&gt; – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set B&lt;/strong&gt; – Vowels Count &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set C&lt;/strong&gt; – Palindrome String&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set D&lt;/strong&gt; – File Operations &amp;amp; Text Processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set E&lt;/strong&gt; – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set F&lt;/strong&gt; – Count Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set G&lt;/strong&gt; – Recently Modified Files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set H&lt;/strong&gt; – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🐧 Conclusion
&lt;/h1&gt;

&lt;p&gt;The &lt;strong&gt;Vowels Count and Case Conversion&lt;/strong&gt; practical is a useful shell scripting exercise for understanding strings, loops, conditions, Linux commands, and Bash parameter expansion.&lt;/p&gt;

&lt;p&gt;Try writing each solution yourself instead of simply copying the code. Understanding the logic will make it much easier to solve similar questions during the practical examination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Learning &amp;amp; Best of Luck for your Linux Practical! 🐧💻&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Linux Practical Set A Solution – Simple Interest &amp; Compound Interest</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Sun, 09 Aug 2026 05:55:13 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/linux-practical-set-a-solution-simple-interest-compound-interest-2pa6</link>
      <guid>https://dev.to/teamworkfahad/linux-practical-set-a-solution-simple-interest-compound-interest-2pa6</guid>
      <description>&lt;p&gt;In this article, we will solve &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical – Set A&lt;/strong&gt; using shell scripting.&lt;/p&gt;

&lt;p&gt;We will calculate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple Interest (SI)&lt;/li&gt;
&lt;li&gt;Compound Interest (CI)&lt;/li&gt;
&lt;li&gt;Total Amount&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will also see different approaches, including solutions &lt;strong&gt;with &lt;code&gt;bc&lt;/code&gt; and without &lt;code&gt;bc&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Practical Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Write a shell script to calculate the Simple Interest and Compound Interest for given amount.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  📐 Formulas
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Simple Interest
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SI = (P × R × T) / 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;P&lt;/code&gt; = Principal Amount&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;R&lt;/code&gt; = Rate of Interest&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;T&lt;/code&gt; = Time&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Simple Interest Amount
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Amount = P + SI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compound Interest
&lt;/h3&gt;

&lt;p&gt;For annual compounding:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CI = P × (1 + R/100)^T - P
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compound Amount
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CA = P × (1 + R/100)^T
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ✅ Solution 1: Using &lt;code&gt;bc&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;bc&lt;/code&gt; is a command-line calculator available on Linux/UNIX systems.&lt;/p&gt;

&lt;p&gt;It is useful when we need &lt;strong&gt;decimal calculations&lt;/strong&gt; in shell scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Principal Amount:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;P

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Rate of Interest (%):"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;R

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Time (in years):"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;T

&lt;span class="nv"&gt;SI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; (&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt; * &lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt; * &lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt;) / 100"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;CA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt; * (1 + &lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt; / 100)^&lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nv"&gt;CI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$CA&lt;/span&gt;&lt;span class="s2"&gt; - &lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Principal Amount : &lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Rate of Interest : &lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Time             : &lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt; years"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Simple Interest  : &lt;/span&gt;&lt;span class="nv"&gt;$SI&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Compound Interest: &lt;/span&gt;&lt;span class="nv"&gt;$CI&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Compound Amount  : &lt;/span&gt;&lt;span class="nv"&gt;$CA&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Principal Amount:
10000

Enter Rate of Interest (%):
10

Enter Time (in years):
2

-----------------------------
Principal Amount : 10000
Rate of Interest : 10%
Time             : 2 years
Simple Interest  : 2000.00
Compound Interest: 2100.00
Compound Amount  : 12100.00
-----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;SI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; (&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt; * &lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt; * &lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt;) / 100"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;bc&lt;/code&gt; performs the decimal calculation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means that the result can contain &lt;strong&gt;2 digits after the decimal point&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For compound interest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;CA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt; * (1 + &lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt; / 100)^&lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | bc&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;^&lt;/code&gt; operator is used for exponentiation.&lt;/p&gt;




&lt;h1&gt;
  
  
  ✅ Solution 2: Without &lt;code&gt;bc&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Bash's normal arithmetic expansion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;$((&lt;/span&gt; ... &lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;works with &lt;strong&gt;integers&lt;/strong&gt;, not floating-point numbers.&lt;/p&gt;

&lt;p&gt;Therefore, if the practical only requires integer input and integer output, we can calculate SI and CI using Bash arithmetic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Principal Amount:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;P

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Rate of Interest (%):"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;R

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Time (in years):"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;T

&lt;span class="nv"&gt;SI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;P &lt;span class="o"&gt;*&lt;/span&gt; R &lt;span class="o"&gt;*&lt;/span&gt; T &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="nv"&gt;AMOUNT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt; i&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;T&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nv"&gt;AMOUNT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;AMOUNT &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; R&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;done

&lt;/span&gt;&lt;span class="nv"&gt;CI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;AMOUNT &lt;span class="o"&gt;-&lt;/span&gt; P&lt;span class="k"&gt;))&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Principal Amount : &lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Rate of Interest : &lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Time             : &lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt; years"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Simple Interest  : &lt;/span&gt;&lt;span class="nv"&gt;$SI&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Compound Interest: &lt;/span&gt;&lt;span class="nv"&gt;$CI&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Compound Amount  : &lt;/span&gt;&lt;span class="nv"&gt;$AMOUNT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"-----------------------------"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;For:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;P = 10000
R = 10
T = 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Simple Interest  : 2000
Compound Interest: 2100
Compound Amount  : 12100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Important Note
&lt;/h3&gt;

&lt;p&gt;This method uses Bash integer arithmetic.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;produces:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;not:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;So this method is suitable when &lt;strong&gt;decimal precision is not required&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  ✅ Solution 3: Using &lt;code&gt;awk&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;If you don't want to use &lt;code&gt;bc&lt;/code&gt; but still want &lt;strong&gt;decimal calculations&lt;/strong&gt;, &lt;code&gt;awk&lt;/code&gt; is a very good alternative.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Principal Amount:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;P

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Rate of Interest (%):"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;R

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter Time (in years):"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;T

&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;P&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;R&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$R&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;T&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$T&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s1"&gt;'
BEGIN {
    SI = (P * R * T) / 100
    CA = P * (1 + R / 100)^T
    CI = CA - P

    printf "-----------------------------\n"
    printf "Principal Amount : %.2f\n", P
    printf "Rate of Interest : %.2f%%\n", R
    printf "Time             : %d years\n", T
    printf "Simple Interest  : %.2f\n", SI
    printf "Compound Interest: %.2f\n", CI
    printf "Compound Amount  : %.2f\n", CA
    printf "-----------------------------\n"
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter Principal Amount:
10000

Enter Rate of Interest (%):
10

Enter Time (in years):
2

-----------------------------
Principal Amount : 10000.00
Rate of Interest : 10.00%
Time             : 2 years
Simple Interest  : 2000.00
Compound Interest: 2100.00
Compound Amount  : 12100.00
-----------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🔍 Difference Between the Solutions
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Decimal Support&lt;/th&gt;
&lt;th&gt;Easy to Understand&lt;/th&gt;
&lt;th&gt;External Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bc&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bash arithmetic&lt;/td&gt;
&lt;td&gt;❌ Integer only&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Which one should you use?
&lt;/h3&gt;

&lt;p&gt;For a Linux practical examination:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If &lt;code&gt;bc&lt;/code&gt; is allowed:&lt;/strong&gt; use the &lt;code&gt;bc&lt;/code&gt; solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If &lt;code&gt;bc&lt;/code&gt; is not allowed:&lt;/strong&gt; use the Bash arithmetic solution when integer output is acceptable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If decimal output is required but &lt;code&gt;bc&lt;/code&gt; is not allowed:&lt;/strong&gt; use &lt;code&gt;awk&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 Important Shell Concepts Used
&lt;/h1&gt;

&lt;p&gt;This practical helps you practice several important shell scripting concepts:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Taking Input
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;read &lt;/span&gt;P
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Arithmetic Expansion
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;$((&lt;/span&gt; ... &lt;span class="k"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Command Substitution
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;SI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;...&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. &lt;code&gt;bc&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Used for floating-point calculations.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;code&gt;awk&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Can perform floating-point calculations and formatted output.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;code&gt;for&lt;/code&gt; Loop
&lt;/h3&gt;

&lt;p&gt;Used in the pure Bash compound-interest solution.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎯 Practical Exam Tip
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't just memorize the script.&lt;br&gt;
Understand these three things:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. How to take input
2. How to apply the SI and CI formulas
3. How to display the result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you understand these, you can easily modify the program if the examiner changes the question slightly.&lt;/p&gt;




&lt;h1&gt;
  
  
  📚 Related Article
&lt;/h1&gt;

&lt;p&gt;This solution is part of the &lt;strong&gt;VNSGU TYBCA Sem 5 Linux (UNIX) Practical – OCT/Nov 2025&lt;/strong&gt; series.&lt;/p&gt;

&lt;p&gt;You can also practice the other practical sets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set A – Simple Interest &amp;amp; Compound Interest&lt;/li&gt;
&lt;li&gt;Set B – Vowels &amp;amp; Case Conversion&lt;/li&gt;
&lt;li&gt;Set C – Palindrome&lt;/li&gt;
&lt;li&gt;Set D – File Operations&lt;/li&gt;
&lt;li&gt;Set E – Display Lines with Validation&lt;/li&gt;
&lt;li&gt;Set F – Files &amp;amp; Directories&lt;/li&gt;
&lt;li&gt;Set G – Recently Modified Files&lt;/li&gt;
&lt;li&gt;Set H – Employee Gross Salary&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ Note
&lt;/h2&gt;

&lt;p&gt;The Compound Interest calculation in this article assumes &lt;strong&gt;annual compounding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Bash-only solution uses integer arithmetic, so decimal precision may differ from the &lt;code&gt;bc&lt;/code&gt; or &lt;code&gt;awk&lt;/code&gt; versions.&lt;/p&gt;




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

&lt;p&gt;The &lt;strong&gt;Simple Interest and Compound Interest&lt;/strong&gt; problem is a good beginner-level shell scripting practical because it combines user input, arithmetic operations, variables, loops, and command-line utilities.&lt;/p&gt;

&lt;p&gt;Practice all three approaches so that you are comfortable solving the question even when the examination environment has different restrictions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Learning &amp;amp; Best of Luck for your Linux Practical! 🐧💻&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>vnsgu</category>
      <category>bca</category>
      <category>linux</category>
      <category>shellscript</category>
    </item>
    <item>
      <title>VNSGU TYBCA Linux(Unix) Semester 5 OCT/Nov 2025 Practical Question Papers Sets</title>
      <dc:creator>Fahad Vahora</dc:creator>
      <pubDate>Sun, 09 Aug 2026 05:46:56 +0000</pubDate>
      <link>https://dev.to/teamworkfahad/vnsgu-tybca-linuxunix-semester-5-octnov-2025-practical-question-papers-sets-2k4j</link>
      <guid>https://dev.to/teamworkfahad/vnsgu-tybca-linuxunix-semester-5-octnov-2025-practical-question-papers-sets-2k4j</guid>
      <description>&lt;h1&gt;
  
  
  VNSGU TYBCA Sem 5 Linux (UNIX) Practical Question Paper – OCT/Nov 2025
&lt;/h1&gt;

&lt;p&gt;Are you preparing for the &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical Examination&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;This article contains the &lt;strong&gt;Linux (UNIX) Shell Scripting Practical Question Paper Sets A to H&lt;/strong&gt; for the &lt;strong&gt;OCT/Nov 2025 examination&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These practical sets cover important topics such as shell scripting, string handling, file handling, command-line arguments, file searching, validation, and arithmetic operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 VNSGU TYBCA Sem 5 – Linux (UNIX)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;th&gt;Information&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;University&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Veer Narmad South Gujarat University (VNSGU)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Course&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;TYBCA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Semester&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Semester 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Subject&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Linux (UNIX)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exam&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OCT/Nov 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Practical Examination&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sets&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A to H&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  🐧 Linux (UNIX) Practical Question Sets
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📌 Set A – &lt;a href="https://dev.to/teamworkfahad/linux-practical-set-a-solution-simple-interest-compound-interest-2pa6"&gt;Simple Interest &amp;amp; Compound Interest&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a shell script to calculate the Simple Interest and Compound Interest for given amount.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Set B – Vowels Count &amp;amp; Case Conversion
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a script to count the number of vowels in the entered string and convert the string into upper case or lower case.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Set C – Palindrome String
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a script to check whether a given string is palindrome or not.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Set D – File Operations &amp;amp; Text Processing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a shell script to perform following:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a file named &lt;code&gt;marks.txt&lt;/code&gt; and insert 5 lines of text.&lt;/li&gt;
&lt;li&gt;Display the first 3 lines of &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Display the last 2 lines of &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Count the number of words, lines, and characters in &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Search for the word &lt;strong&gt;Linux&lt;/strong&gt; in &lt;code&gt;marks.txt&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Commands Covered
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;head&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Set E – Display Specific Lines from File
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a shell script that will pass file name and two numbers a1 and a2. Display line a1 to a2 from that file.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proper validation required.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The script should properly validate the input and handle invalid arguments or file names.&lt;/p&gt;

&lt;h3&gt;
  
  
  Concepts Covered
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Command-line arguments&lt;/li&gt;
&lt;li&gt;File validation&lt;/li&gt;
&lt;li&gt;Line numbers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Input validation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Set F – Count Files and Directories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a shell script to find total number of files and total number of directories in current working directory.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Concepts Covered
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Directory handling&lt;/li&gt;
&lt;li&gt;File testing&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Current working directory&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Set G – Recently Modified Files
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a shell script to find all files in the current directory that were modified in the last 7 days and display their names and sizes.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Concepts Covered
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;File searching&lt;/li&gt;
&lt;li&gt;Modification time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;File size&lt;/li&gt;
&lt;li&gt;Shell scripting&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Set H – Employee Gross Salary
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a shell script that computes the gross salary of an employee according to the following:&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  If Basic Salary is &amp;lt; 50000
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HRA = 20% of Basic Salary&lt;/li&gt;
&lt;li&gt;DA = 164% of Basic Salary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  If Basic Salary is &amp;gt; 50000
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HRA = 15% of Basic Salary&lt;/li&gt;
&lt;li&gt;DA = 136% of Basic Salary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Input
&lt;/h3&gt;

&lt;p&gt;The basic salary should be entered interactively through the keyboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Formula
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gross Salary = Basic Salary + DA + HRA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  📖 Topics Covered in These Practical Sets
&lt;/h1&gt;

&lt;p&gt;These eight practical sets cover several important Linux and UNIX shell scripting concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shell Scripting&lt;/li&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;User Input&lt;/li&gt;
&lt;li&gt;Arithmetic Operations&lt;/li&gt;
&lt;li&gt;&lt;code&gt;if-else&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;String Handling&lt;/li&gt;
&lt;li&gt;String Case Conversion&lt;/li&gt;
&lt;li&gt;Palindrome Checking&lt;/li&gt;
&lt;li&gt;File Handling&lt;/li&gt;
&lt;li&gt;Command-Line Arguments&lt;/li&gt;
&lt;li&gt;File Validation&lt;/li&gt;
&lt;li&gt;Text Processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;head&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;File Size&lt;/li&gt;
&lt;li&gt;File Modification Time&lt;/li&gt;
&lt;li&gt;Input Validation&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🎯 Linux Practical Exam Preparation Tips
&lt;/h1&gt;

&lt;p&gt;If you are preparing for the VNSGU TYBCA Linux practical examination, practice each set yourself instead of only memorizing the script.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Understand Shell Syntax
&lt;/h3&gt;

&lt;p&gt;Practice basic shell scripting syntax such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;variables, &lt;code&gt;read&lt;/code&gt;, conditions, loops, and command substitution.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Practice Linux Commands
&lt;/h3&gt;

&lt;p&gt;Make sure you are comfortable with commands such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat
head
tail
wc
grep
&lt;/span&gt;find
&lt;span class="nb"&gt;cut
tr
sed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Practice Validation
&lt;/h3&gt;

&lt;p&gt;For programs involving files or command-line arguments, always check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether the required arguments are provided&lt;/li&gt;
&lt;li&gt;Whether the file exists&lt;/li&gt;
&lt;li&gt;Whether the file is readable&lt;/li&gt;
&lt;li&gt;Whether the entered values are valid&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Practice Without Copy-Paste
&lt;/h3&gt;

&lt;p&gt;Try writing every program from scratch. This will help you understand the logic and make it easier to solve variations of the same question during the practical exam.&lt;/p&gt;




&lt;h1&gt;
  
  
  📝 Quick Revision
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Set&lt;/th&gt;
&lt;th&gt;Practical Topic&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple Interest &amp;amp; Compound Interest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vowels Count &amp;amp; Case Conversion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Palindrome String&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;D&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;File Operations &amp;amp; Text Processing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Display Lines with Validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;F&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Count Files &amp;amp; Directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;G&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recently Modified Files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;H&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Employee Gross Salary&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;These &lt;strong&gt;VNSGU TYBCA Semester 5 Linux (UNIX) Practical Sets A–H&lt;/strong&gt; cover a useful range of shell scripting problems for practical examination preparation.&lt;/p&gt;

&lt;p&gt;Students should practice each program on a Linux/UNIX environment and understand the logic behind every command and statement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All the best for your Linux (UNIX) Practical Examination! 🐧💻&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚠️ Disclaimer
&lt;/h3&gt;

&lt;p&gt;This article is intended for &lt;strong&gt;educational and examination preparation purposes&lt;/strong&gt;. Students should verify official examination details and question papers with the relevant VNSGU sources.&lt;/p&gt;

</description>
      <category>vnsgu</category>
      <category>linux</category>
      <category>tybca</category>
    </item>
  </channel>
</rss>
