Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kirill #93

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions courses/bash/ex02/ex01.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

if [ "$#" -ne 1 ]; then
echo "Usage: $0 'pattern'"
exit 1
fi

pattern=$1

find . -type d | while read -r dir; do
# Get the relative path
rel_path=${dir#./}

if echo "$rel_path" | grep -w -q "$pattern"; then
echo "$rel_path"
fi
done
31 changes: 31 additions & 0 deletions courses/bash/ex03/kirill
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash

if [ "$#" -ne 4 ]; then
echo "Usage: $0 filename keyword1 keyword2 keyword3" >&2
exit 1
fi

filename=$1
keyword1=$2
keyword2=$3
keyword3=$4

if [ ! -r "$filename" ]; then
exit 1
fi

search_keyword() {
local keyword=$1
local matches
matches=$(grep -c "$keyword" "$filename")
echo "Keyword: $keyword"
echo "Number of matches: $matches"
grep "$keyword" "$filename"
echo ""
}

search_keyword "$keyword1"
search_keyword "$keyword2"
search_keyword "$keyword3"

exit 0
15 changes: 15 additions & 0 deletions courses/bash/ex04/kirill
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

if [ "$#" -ne 1 ]; then
echo "Usage: $0 pattern" >&2
exit 1
fi

pattern=$1

find . -type f | while read -r file; do

grep -Hn "$pattern" "$file"
done

exit 0
50 changes: 50 additions & 0 deletions courses/bash/ex05/kirill
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/bash

if [ "$#" -lt 2 ]; then
echo "Usage: $0 {-m|-s|-e|-o} number1 number2 ..." >&2
exit 1
fi

operation=$1
shift

sum=0
count=0
even_sum=0
odd_sum=0

for number in "$@"; do
sum=$(echo "$sum + $number" | bc)
count=$((count + 1))
if [ $((number % 2)) -eq 0 ]; then
even_sum=$(echo "$even_sum + $number" | bc)
else
odd_sum=$(echo "$odd_sum + $number" | bc)
fi
done

case $operation in
-s)
echo "Sum: $sum"
;;
-e)
echo "Sum of even numbers: $even_sum"
;;
-o)
echo "Sum of odd numbers: $odd_sum"
;;
-m)
if [ $count -ne 0 ]; then
mean=$(echo "scale=2; $sum / $count" | bc)
echo "Mean: $mean"
else
echo "No numbers provided to calculate mean"
fi
;;
*)
echo "Invalid option. Usage: $0 {-m|-s|-e|-o} number1 number2 ..." >&2
exit 1
;;
esac

exit 0
17 changes: 17 additions & 0 deletions courses/bash/ex06/kirill
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

map() {
if [ "$#" -lt 2 ]; then
echo "Usage: map command arg1 arg2 ..."
return 1
fi

command=$1
shift

for arg in "$@"; do
$command "$arg"
done
}


Empty file added courses/bash/ex07/kirill
Empty file.
79 changes: 79 additions & 0 deletions courses/bash/ex09/kirill
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/bin/bash

usage() {
echo "Usage: $0 [OPTIONS] FILE"
echo "Options:"
echo " -u, --url Extract URLs from the file"
echo " -e, --email Extract emails from the file"
echo " -h, --help Display this help and exit"
}

extract_urls() {
grep -oE 'https?://[^\s/$.?#].[^\s]*' "$1"
}

extract_emails() {
grep -oE '[\w._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}' "$1"
}

options=$(getopt -o ueh --long url,email,help -- "$@")
if [ $? -ne 0 ]; then
usage
exit 1
fi

eval set -- "$options"

url_flag=false
email_flag=false

while true; do
case "$1" in
-u | --url)
url_flag=true
shift
;;
-e | --email)
email_flag=true
shift
;;
-h | --help)
usage
exit 0
;;
--)
shift
break
;;
*)
usage
exit 1
;;
esac
done

is provided
if ! $url_flag && ! $email_flag; then
echo "Error: You must specify at least one option (--url or --email)."
usage
exit 1
fi


if [ $# -ne 1 ]; then
echo "Error: You must specify a file."
usage
exit 1
fi

file
file="$1"
if $url_flag; then
echo "Extracting URLs from $file:"
extract_urls "$file"
fi

if $email_flag; then
echo "Extracting emails from $file:"
extract_emails "$file"
fi
13 changes: 13 additions & 0 deletions courses/bash/ex10/kirill
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
'
BEGIN {

line_count = 0;
}
{
line_count++;
}
END {
print line_count;
}
' "$@"
15 changes: 15 additions & 0 deletions courses/cunix/ex01/src/strlen.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include <stdio.h>
size_t my_strlen(const char *str) {
const char *s = str;
while (*s != '\0') {
s++;
}
return s - str;
}

int main() {
const char *my_string = "Hello, World!";
size_t length = my_strlen(my_string);
printf("Length of the string is %zu\n", length);
return 0;
}