diff --git a/src/public/bash/SCC22TechStack.png b/src/public/bash/SCC22TechStack.png
new file mode 100644
index 0000000..edb8539
Binary files /dev/null and b/src/public/bash/SCC22TechStack.png differ
diff --git a/src/public/bash/index.html b/src/public/bash/index.html
index 49505f5..59cf3da 100644
--- a/src/public/bash/index.html
+++ b/src/public/bash/index.html
@@ -35,6 +35,7 @@
## What is Bash?
+
Unix systems can do Shells
+ MacOS
+
+
+ Shells
+ Windows
+
+
+ Shells
+ Linux
+
+
+ cat /etc/shells
Most POSIX Compliant Shell
+How programs can be called: firefox, steam, discord, grep
+cd ls echo/printf
-cat, other commands we might use in the scripts
-And and Or:
+if [[ "$STRING1" == "$STRING2" && "$STRING1" == "$STRING3" ]]; then
+ printf "%s is equal to both strings" "$STRING1"
+fi
+ And and Or:
+if [[ "$STRING1" == "$STRING2" || "$STRING1" == "$STRING3" ]]; then
+ printf "%s is equal to either string" "$STRING1"
fi
- - Piping - - If Statement: - - && and || - - For loops: - - How the scripts actually work - - functions, associative arrays, string substition, etc. - - Look at a good cheatsheet -
+$ notepad++ script.sh
+ #!/bin/bash
+ $ notepad++ script.sh
+ #!/usr/bin/env bash
+ $ notepad++ script.sh
+ #!/usr/bin/env bash
+# Comment1: Today is a good day
+
+echo "Hi there"
+VAR1="21"
+...
+ $ notepad++ script.sh
+$ bash script.sh
+Hi there
+...
+$
+ #!/usr/bin/env bash
+# Comment1: Today is a good day
+
+echo "Hi there"
+VAR1="21"
+...
+ $ notepad++ script.sh
+$ chmod +x script.sh
+$ ./script.sh
+Hi there
+...
+$
+ #!/usr/bin/env bash
+# Comment1: Today is a good day
+
+echo "Hi there"
+VAR1="21"
+...
+ #!/bin/bash --
+
+
+control='ok'
+
+adddir() {
+ [[ -d $1 ]] || mkdir $1;
+}
+
+add_class() {
+
+ # make the directories for seperate classes
+ adddir Material/$1 && ln -sL ../../Material/$1 Classes/$1/Material
+ adddir Homework/$1 && ln -sL ../../Homework/$1 Classes/$1/Homework
+ adddir Textbooks/$1 && ln -sL ../../Textbooks/$1 Classes/$1/Textbooks
+
+
+ if [[ -f Material/$1/syllabus.pdf ]] then
+ # a little scuffed but looks for regex assuming only 1 will meet
+ ln -sL ../../Material/*yllabus*.pdf Material/$1/syllabus.pdf
+ fi
+}
+
+add_textbook() {
+ book=$(basename $1)
+ class=''
+
+ # Check that Classes is not empty
+ if [[ ! -d Classes/ ]] || [[ ! $(ls Classes/) ]]; then
+ printf 'You are missing some Classes to setup\n'
+ printf 'Please add that first\n'
+ exit
+ fi
+
+ # choose class
+ printf 'Choose a class: \n'
+ printf ' %s\n' $(ls -d Classes/*/ | cut -d \/ -f2) #, funny this prints like a loop for every element of these
+ printf ' : '
+ read -r class
+ if [[ ! -d Classes/$class ]]; then
+ printf 'That is not a class!\n'
+ printf 'Exiting...\n'
+ exit 1;
+ fi
+
+
+ mv -i $1 $HOME/Documents/School/Textbooks/
+ ln -s $HOME/Documents/School/Textbooks/${book} $(pwd -P)/Textbooks/$class/
+}
+
+usage() {
+ printf '%s:
+
+ Usage: %s [-c] [-h] [-t]
+
+ Options:
+ -c Add a class
+ -h Show help (this message)
+ -t Add a textbook. Takes in a textbook, moves to ~/Documents/School/Textbooks
+ and then creates a soft link in the classes Textbook directory.
+ %s -t /path/to/textbook
+
+' $0 $0 $0
+ exit 1
+}
+
+
+# check you are in the right place
+if [[ $(basename $(dirname $(pwd))) != 'School' ]]; then
+ printf 'You are not in the a Sem/Quarter directory!'
+ usage
+fi
+
+while getopts ":hct:" arg; do
+ case "${arg}" in
+ c)
+ control=''
+ ;;
+ t)
+ # give a way to read the next argument
+ if [[ -z ${OPTARG} ]]; then
+ usage
+ fi
+ add_textbook ${OPTARG}
+ exit 0;
+ ;;
+ h)
+ usage
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+
+# Need to choose classes
+if [[ ! -d Classes/ ]] || [[ $control != 'ok' ]]; then
+ # add the directory if not existent
+ adddir Classes
+
+ # add classes with a prompt
+ printf 'Set a class %s, bro: ' $(whoami)
+ read -r control
+ adddir Classes/$control
+
+ while [[ $control != 'ok' ]]; do
+ printf 'Add another class or say "ok" to finish [ok]: '
+ # if read then overwrite control
+ read -r control
+ [[ $control != 'ok' ]] && adddir Classes/$control
+ done
+
+else
+ printf 'Classes/ already exists. Perhaps you meant to use [-c] flag.\n'
+ usage
+fi
+
+
+# Add the dirs if they are not there yet
+adddir Material
+adddir Homework
+adddir Textbooks
+
+for i in $(ls -d Classes/*/ | cut -d \/ -f2); do
+
+ # check if class hasn't been edited
+ if [[ ! $(ls Classes/$i/) ]]; then
+ printf 'Adding class %s\n' $i
+ add_class $i
+ fi
+
+done
+
+printf 'done'
+ + - functions, associative arrays, string substition, etc. + - Look at a good cheatsheet +
+#!/bin/bash
+KERNEL="$(uname -r)"
+MEM="$(free -h | awk '/^Mem:/ {print $2}')"
+
+echo "Hostname: " $HOSTNAME
+echo "Username: " $USER
+echo "Kernel Version: " $KERNEL
+echo "Total Memory: " $MEM
+
#!/bin/bash
+age=18
+if [ "$age" -ge 18 ]; then
+ echo "You are an adult."
+else
+ echo "You are a minor."
+fi
+
#!/bin/bash
+backup_dir="/path/to/backup"
+source_dir="/path/to/source"
+zip -r "$backup_dir/$backup_file" "$source_dir"
+
+ #!/usr/bin/env bash
+# Demo 1
+
+BADNAME="myVar"
+GOODNAME="my_var"
+for i in $(find . -type f); do
+ if [[ "$i" != "./script.sh" ]]; then
+ if grep "$BADNAME" $i > /dev/null; then
+ echo "Found in the phrase in ${i}";
+ sed -i "s/$BADNAME/$GOODNAME/g" $i > /dev/null;
+ fi
+ fi
+done
+
$ ls
+Downloads/ Documents/ Videos/ ...
+ $ cd Downloads/
+ $ ls
+Bash-Workshop.jpg Me-Playing-The-Saxophone.mp3 some-papers/
+ $ ip a | grep inet
+inet 127.0.0.1/8 scope host lo
+inet6 ::1/128 scope host proto kernel_lo
+inet 100.80.134.178/20 brd 100.80.143.255 scope global dynamic noprefixroute wlp2s0
+inet6 fe80::3977:6f8:fbce:e909/64 scope link noprefixroute
+ $ ifconfig a | grep inet
+ $ python -m http.server
+Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
+127.0.0.1 - - [12/Mar/2024 10:28:39] "GET / HTTP/1.1" 200 -
+127.0.0.1 - - [12/Mar/2024 10:28:41] "GET /Me-Playing-The-Saxophone.mp3 HTTP/1.1" 200 -
+ https://cseweb.ucsd.edu/classes/fa23/cse120-a/lectures/mem.pdf
+ +$ cd Downloads
+$ ls
+Bash-Workshop.jpg Me-Playing-The-Saxophone.mp3 some-papers
+$
+
$ cd Downloads
+$ ls
+Bash-Workshop.jpg Me-Playing-The-Saxophone.mp3 some-papers
+$ wget https://cseweb.ucsd.edu/classes/fa23/cse120-a/lectures/mem.pdf
+ $ cd Downloads
+$ ls
+Bash-Workshop.jpg Me-Playing-The-Saxophone.mp3 some-papers
+$ wget https://cseweb.ucsd.edu/classes/fa23/cse120-a/lectures/mem.pdf
+--2024-03-12 11:27:28-- https://cseweb.ucsd.edu/classes/fa23/cse120-a/lectures/mem.pdf
+Resolving cseweb.ucsd.edu (cseweb.ucsd.edu)... 132.239.8.30
+Connecting to cseweb.ucsd.edu (cseweb.ucsd.edu)|132.239.8.30|:443... connected.
+HTTP request sent, awaiting response... 200 OK
+Length: 2497853 (2.4M) [application/pdf]
+Saving to: ‘mem.pdf’
+
+mem.pdf 100%[=====================================================================================================================================>] 2.38M 6.58MB/s in 0.4s
+
+2024-03-12 11:27:30 (6.58 MB/s) - ‘mem.pdf’ saved [2497853/2497853]
+$ clear
+ $ ls
+Bash-Workshop.jpg Me-Playing-The-Saxophone.mp3 mem.pdf some-papers
+$
+ #!/usr/bin/bash -x
+location="cseweb.ucsd.edu/classes/fa23/cse120-a/lectures/"
+
+wget -r -np -R "index.html*" https://$location
+class_list=$(ls -rt ./$location)
+
+
+count=1
+for i in $class_list; do
+
+ mv -n ./$location/$i ./${count}_${i}
+ count=$((count + 1))
+
+done
+
+
+rm -rf cseweb.ucsd.edu
+
+ $ mkdir temp/
+$ cd temp
+$ wget -k -r -p https://supercomputing-club.sdsc.edu/
+ $ python -m http.server
+ $ python -m http.server
+ Try visiting localhost:8000 if you completed these steps
+Most computers run some Unix derivative
+Student Cluster Competition 2022 Tech Stack
Trying to braek the bounds of the perhaps margin on this thing. They contain the maximum size of content for slides.
-#!/bin/bash
-# Descr: Bash Script for Bash Workshop
-printf "Hi, how are you doing?\n"
-
-firefox
-
-wget -k -m -r https://ieeeucsd.org/
-
- #!/bin/bash
-# Descr: Bash Script for Bash Workshop
-printf "Hi, how are you doing?\n"
-
-firefox
-
-wget -k -m -r https://ieeeucsd.org/
-
- One
-Two
-Three
-One
-Two
-Three
-