Shell scripting cheatsheet

 SED : 
it is used to replace a word 

Replace a word in a file:sed 's/old_word/new_word/' file.txt
Replace all occurrences of a word in a file:sed 's/old_word/new_word/g' file.txt
Delete lines matching a pattern:sed '/pattern/d' file.txt

AWK:
Print specific columns from a CSV file:awk -F ',' '{print $1, $3}' file.csv
Calculate the sum of a column in a numeric file: awk '{sum += $1} END {print sum}' file.txt
Filter lines based on a condition:awk '$3 > 50 {print $1, $3}' file.txt




Shebang: The shebang, also known as a hashbang, is the first line of a script and specifies the interpreter to use. For example, #!/bin/bash
Variables: Variables store data for later use. $name. To declare a variable as global, use the export keyword.
Command substitution: For example, files=$(ls) stores the output of the ls command in the files variable.
Control structures:

if-else: Conditionally execute code based on a condition. It has the form:

if condition; then
  # code to execute if condition is true
else
  # code to execute if condition is false
fi

for loop: Iterate over a list of items. It has the form:

for item in list; do
  # code to execute for each item
done

while loop: Repeatedly execute code as long as a condition is true. It has the form:
while condition; do
  # code to execute while condition is true
done

case statement: Perform different actions based on the value of a variable. It has the form:
case variable in
  pattern1)
    # code to execute for pattern1
    ;;
  pattern2)
    # code to execute for pattern2
    ;;
  *)
    # code to execute for other cases
    ;;
esac

Functions: Functions allow you to define reusable blocks of code. They are declared using the function keyword or simply by their name followed by parentheses. For example:

function greet() {
  echo "Hello, $1!"
}
greet "John"

Input/output:  The read command is used to read input, and echo or printf are used to display output.

Conditional expressions:  -eq (equal), -ne (not equal), -lt (less than), -gt (greater than), -z (empty string)

Redirecting input/output: The command < input.txt reads input from input.txt, and command > output.txt redirects output to output.txt.


$* -> treats all the charcaters in a single quotes as one 
$@ -> it uses delimeter example " hello world" foo bar : it treats as  strings "hello world", "foo", and "bar

write one function and then call the functions

mytest(){
local name=$1;
echo hello, $name;
}

mytest world 



1) Write a shell script to accept the name from name and age from the user and display that back to the user.
Ans)
#!/bin/bash

# Prompt the user to enter their name
echo "Enter your name:"
read name

# Prompt the user to enter their age
echo "Enter your age:"
read age

# Display the name and age back to the user
echo "Name: $name"
echo "Age: $age"


2) Write a shell script to accept a file name from the user and make a copy of that file. Ans)
#!/bin/bash

# Prompt the user to enter a file name
echo "Enter the name of the file you want to copy:"
read filename

# Check if the file exists
if [ -f "$filename" ]; then
  # Generate a unique copy filename
  copy_filename="${filename}_copy"

  # Make a copy of the file
  cp "$filename" "$copy_filename"

  echo "File copied successfully. New file name: $copy_filename"
else
  echo "File does not exist."
fi


3) Write a shell script to accept file name from the user and display the contents of file. If the file doesn't exist then try curbing the error and display a user friendly error to user. Ans)
#!/bin/bash

# Prompt the user to enter a file name
echo "Enter the name of the file:"
read filename

# Check if the file exists
if [ -f "$filename" ]; then
  # Read and display the contents of the file
  echo "Contents of $filename:"
  cat "$filename"
else
  echo "Error: File '$filename' does not exist."
fi


4) Write a shell script to accept a file name from user and check whether its an ordinary file or a directory. In case of file show the contents of file and if itís a directory show number of files in that directory.
Ans)
#!/bin/bash

# Prompt the user to enter a file name
echo "Enter the name of the file or directory:"
read filename

# Check if the specified path exists
if [ -e "$filename" ]; then
  # Check if it's a file
  if [ -f "$filename" ]; then
    echo "Contents of $filename:"
    cat "$filename"
  # Check if it's a directory
  elif [ -d "$filename" ]; then
    num_files=$(ls -1 "$filename" | wc -l)
    echo "Number of files in $filename: $num_files"
  else
    echo "Error: '$filename' is neither a file nor a directory."
  fi
else
  echo "Error: Path '$filename' does not exist."
fi


5) Write a shell script to accept a file name from user. Check whether file has all the permissions if not assign the respective permissions to that file.
Ans)
#!/bin/bash

# Prompt the user to enter a file name
echo "Enter the name of the file:"
read filename

# Check if the file exists
if [ -f "$filename" ]; then
  # Check if all permissions are set
  if [ -r "$filename" ] && [ -w "$filename" ] && [ -x "$filename" ]; then
    echo "File '$filename' already has all permissions."
  else
    # Assign missing permissions
    if [ ! -r "$filename" ]; then
      chmod +r "$filename"
      echo "Read permission added to '$filename'."
    fi
    if [ ! -w "$filename" ]; then
      chmod +w "$filename"
      echo "Write permission added to '$filename'."
    fi
    if [ ! -x "$filename" ]; then
      chmod +x "$filename"
      echo "Execute permission added to '$filename'."
    fi
  fi
else
  echo "Error: File '$filename' does not exist."
fi


6) Write a shell script to accept a file name from the user and sort the file. If the file doesn't exist curb the error message and show the user-friendly message.
Ans)
#!/bin/bash

# Prompt the user to enter a file name
echo "Enter the name of the file:"
read filename

# Check if the file exists
if [ -f "$filename" ]; then
  # Sort the file
  sorted_filename="${filename}_sorted"
  sort "$filename" > "$sorted_filename"
  echo "File sorted successfully. Sorted file: $sorted_filename"
else
  echo "Error: File '$filename' does not exist."
fi



Comments

Popular posts from this blog

Understanding Terraform

How to make CRS and ASM not to restart after server reboot

How to repair ASM disk header