Skip to main content

File Handling using Shell Scripts

File handling using Shell Scripts

  1. to prepend a line to a file
  2. to develop a temporary file name generator
  3. to compare two files

Requirements:

    Suse Linux, BASH Scripting

Program

(a) Prepending a line to a file


 

#!/bin/bash

# prepend.sh: Add text at beginning of file.


 

E_NOSUCHFILE=65


 

read -p "File: " file   # -p arg to 'read' displays prompt.

if [ ! -e "$file" ]

    then   # Bail out if no such file.

    echo "File $file not found."

    exit $E_NOSUCHFILE

fi


 

read -p "Title: " title

cat - $file <<<$title > $file.new

echo "Modified file is $file.new"

exit 0


 

(b) to develop a temporary file name generator

#!/bin/bash

# tempfile-name.sh:  temp filename generator

BASE_STR=`mcookie`   # 32-character magic cookie.

POS=11               # Arbitrary position in magic cookie string.

LEN=5                # Get $LEN consecutive characters.

prefix=temp          #  This is, after all, a "temp" file.

#  For more "uniqueness," generate the filename prefix

#+ using the same method as the suffix, below.


 

suffix=${BASE_STR:POS:LEN}

# Extract a 5-character string, starting at position 11.

temp_filename=$prefix.$suffix

# Construct the filename.

echo "Temp filename = "$temp_filename""

# sh tempfile-name.sh

# Temp filename = temp.e19ea

exit 0


 

(c) Comparing two files

#!/bin/bash

ARGS=2  # Two args to script expected.

E_BADARGS=65

E_UNREADABLE=66

if [ $# -ne "$ARGS" ]

then

  echo "Usage: `basename $0` file1 file2"

  exit $E_BADARGS

fi


 

if [[ ! -r "$1" || ! -r "$2" ]]

then

  echo "Both files to be compared must exist and be readable."

  exit $E_UNREADABLE

fi


 

cmp $1 $2 &> /dev/null  # /dev/null buries the output of the "cmp" command.

if [ $? -eq 0 ]         # Test exit status of "cmp" command.

then

  echo "File \"$1\" is identical to file \"$2\"."

else  

  echo "File \"$1\" differs from file \"$2\"."

fi

exit 0


 


 

Observation:

Open the VI editor

$: vi <filename>

Compile using bash

$: sh <filename>

Comments

Popular posts from this blog

How to Create Ubuntu 24.04 Bootable USB Using Rufus [Step-by-Step Guide]

How to Create Ubuntu 24.04 Bootable USB Using Rufus [Step-by-Step Guide] Are you planning to install or try Ubuntu 24.04 LTS ? The easiest and most reliable method is to create a bootable USB drive using Rufus on a Windows system. This detailed guide will help you create a Ubuntu 24.04 USB bootloader using Rufus with easy-to-follow steps and screenshots (optional). Here is the complete video of the bootloader creation and OS installation in Windows 11. 🧰 Requirements A USB flash drive (minimum 8GB recommended) A Windows PC Ubuntu 24.04 LTS ISO file Rufus USB creation tool 🧾 Steps to Create a Ubuntu 24.04 Bootable USB Using Rufus ✅ Step 1: Download Ubuntu 24.04 ISO Visit the official Ubuntu website and download the Ubuntu 24.04 LTS ISO file . ✅ Step 2: Download and Run Rufus Head to Rufus official site and download the latest version. Open the executable file (no installation required). ✅ Step 3: Insert USB Drive Plug in your USB drive. Rufus ...

Installing ns3 in Ubuntu 22.04 | Complete Instructions

In this post, we are going to see how to install ns-3.36.1 in Ubuntu 22.04. You can follow the video for complete details Tools used in this simulation: NS3 version ns-3.36.1  OS Used: Ubuntu 22.04 LTS Installation of NS3 (ns-3.36.1) There are some changes in the ns3 installation procedure and the dependencies. So open a terminal and issue the following commands Step 1:  Prerequisites $ sudo apt update In the following packages, all the required dependencies are taken care and you can install all these packages for the complete use of ns3. $ sudo apt install g++ python3 python3-dev pkg-config sqlite3 cmake python3-setuptools git qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gsl-bin libgsl-dev libgslcblas0 wireshark tcpdump sqlite sqlite3 libsqlite3-dev  libxml2 libxml2-dev libc6-dev libc6-dev-i386 libc...

NS2 (NS-2.35) Installation in Ubuntu 11.10

This post will help you in installing Network Simulator 2 version NS2.35 in Ubuntu 11.10 Instructions Install Ubuntu Download NS-2.35 ( http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download ) Unzip or untar it to any folder (recommended is /home/ loginname) using the following commands one by one sudo apt-get update sudo apt-get install build-essential autoconf automake libxmu-dev tar zxvf ns-allinone-2.35.tar.gz cd ns-allinone-2.35 ./install Once installed the PATH information will be provided to you. Copy the PATH and LD_LIBRARY_PATH Variable to .bashrc (see a dot in the beginning) Input the path information in .bashrc file like this export PATH=$PATH:<Place your paths here> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: <place the LD_LIBRARY_PATHS> here. Once done, save the file and close execute the command source .bashrc try ns or nam to see whether your installation succeeded.