1. Get file details using stat

#!/bin/zsh
 
# The stat command will be used here to provide the details of the file.
 
# Check if exactly one argument is provided
if [ $# -ne 1 ]; then
    echo "Usage: $0 filename"
    exit 1
fi
 
# Store the argument in a variable
file=$1 # the first positional argument.
 
# Check if the file exists
if [ -f "$file" ]; then
    # Display the last modified time of the file
    echo "Last modified time of $file:"
    stat -c %y "$file" # Uses the stat command with the -c %y option to display the last modification time of the file. The %y format specifier shows the last modification time in a human-readable format.
else
    # Display a message if the file does not exist
    echo "File $file does not exist."
    exit 1
fi
 

2. Open file and modify file contents using grep and sed

#!/bin/zsh
 
 
# Check if exactly one argument is provided
if [ $# -ne 1 ]; then
    echo "Usage: $0 filename"
    exit 1
fi
 
# Store the argument in a variable
file=$1
 
 
# Check if the file exists
if [ -f "$file" ]; then
    # Check if the file contains the word "UNIX"
    #grep -q "UNIX" "$file" checks if the word "UNIX" is present in the file.
    #-q makes grep operate quietly without printing matching lines (just return the exit status).
    if grep -q "UNIX" "$file"; then
        # Remove the word "UNIX" from the file and save the changes
        sed -i 's/UNIX//g' "$file"
        # sed -i 's/UNIX//g' "$file" uses sed to remove all occurrences of the word "UNIX" from the file.
        #-i option edits the file in place.
        #s/UNIX//g specifies the substitution command to replace "UNIX" with nothing (//), and g applies the replacement globally on each line.
        echo "The word 'UNIX' has been removed from $file."
    else
        echo "The word 'UNIX' was not found in $file."
    fi
else
    # Display a message if the file does not exist
    echo "File $file does not exist."
    exit 1
fi
 

3. Fibonacci

#!/bin/zsh
 
fibonacci() {
    places=$1
 
    current=0
    next=1
 
    echo "The Fibonacci series till $places places is: "
 
    echo -n "$current "
 
    for ((i=1; i<places; i++))  # Changed condition to 'i<places'
    do
        temp=$current # predecessor
 
        current=$((current + next))  # predecessor + next.
        next=$temp
 
        echo -n "$current "
    done
 
    echo # to print a newline after the output
}
 
fibonacci 20
 

4. Maximum of 3 numbers using CLI args

#!/bin/zsh
 
find_max_three() {
    num1=$1
    num2=$2
    num3=$3
 
    if [ $num1 -lt $num3 ] && [ $num2 -lt $num3 ]; then
        echo "$num3 is the maximum out of the three numbers!"
    elif [ $num1 -lt $num2 ] && [ $num2 -gt $num3 ]; then
        echo "$num2 is the maximum out of the three numbers!"
    elif [ $num1 -gt $num2 ] && [ $num1 -gt $num3 ]; then
        echo "$num1 is the maximum out of the three numbers!"
    else
        echo "There was an issue determining the maximum."
    fi
}
 
if [ $# -ne 3 ]
then
    echo "Usage: $0 num1 num2 num3"
    exit 1
fi
 
find_max_three $1 $2 $3

5. Factorial

#!/bin/zsh
 
factorial() {
    num=$1 # A positional argument for the factorial function.
    frac=1
 
    for ((i=num; i >= 1; i--))
    do
        frac=$((frac*i))
    done
    echo "Factorial of $num is $frac!"
}
 
echo -n "Enter a number to calculate its factorial: "
read num
factorial $num