From 4346725ac2d55150aeb8042f5398f8b08a8a94a1 Mon Sep 17 00:00:00 2001 From: ronny abraham Date: Tue, 21 Jan 2025 04:46:20 +0200 Subject: [PATCH] Renamed submodule path to gen/missing_semester_2020 --- gen/missing_semester_2020/.gitignore | 107 +++++++ gen/missing_semester_2020/.gitmodules | 3 + gen/missing_semester_2020/_share/media/fonts | 1 + .../_share/media/img/lecture01/ex01.png | Bin 0 -> 49953 bytes .../_share/media/js/collapsible.js | 1 + .../_share/media/sass/missing-semester.sass | 93 ++++++ .../_subsections/lesson-01.org | 133 ++++++++ .../_subsections/lesson-02.org | 288 ++++++++++++++++++ .../_subsections/lesson-03.org | 38 +++ gen/missing_semester_2020/toc.org | 34 +++ 10 files changed, 698 insertions(+) create mode 100644 gen/missing_semester_2020/.gitignore create mode 100644 gen/missing_semester_2020/.gitmodules create mode 120000 gen/missing_semester_2020/_share/media/fonts create mode 100644 gen/missing_semester_2020/_share/media/img/lecture01/ex01.png create mode 120000 gen/missing_semester_2020/_share/media/js/collapsible.js create mode 100644 gen/missing_semester_2020/_share/media/sass/missing-semester.sass create mode 100644 gen/missing_semester_2020/_subsections/lesson-01.org create mode 100644 gen/missing_semester_2020/_subsections/lesson-02.org create mode 100644 gen/missing_semester_2020/_subsections/lesson-03.org create mode 100644 gen/missing_semester_2020/toc.org diff --git a/gen/missing_semester_2020/.gitignore b/gen/missing_semester_2020/.gitignore new file mode 100644 index 0000000..3917bca --- /dev/null +++ b/gen/missing_semester_2020/.gitignore @@ -0,0 +1,107 @@ +# Created by https://www.toptal.com/developers/gitignore/api/vim,emacs,osx +# Edit at https://www.toptal.com/developers/gitignore?templates=vim,emacs,osx + +*.html +*.css +*.css.map + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + + +### OSX ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +# End of https://www.toptal.com/developers/gitignore/api/vim,emacs,osx diff --git a/gen/missing_semester_2020/.gitmodules b/gen/missing_semester_2020/.gitmodules new file mode 100644 index 0000000..86216b7 --- /dev/null +++ b/gen/missing_semester_2020/.gitmodules @@ -0,0 +1,3 @@ +[submodule "_share/media/sass/org-media-sass"] + path = _share/media/sass/org-media-sass + url = git@bitbucket.org:ronnyabraham/org-media-sass.git diff --git a/gen/missing_semester_2020/_share/media/fonts b/gen/missing_semester_2020/_share/media/fonts new file mode 120000 index 0000000..6f076aa --- /dev/null +++ b/gen/missing_semester_2020/_share/media/fonts @@ -0,0 +1 @@ +/Users/ronny/notes/_share/media/fonts \ No newline at end of file diff --git a/gen/missing_semester_2020/_share/media/img/lecture01/ex01.png b/gen/missing_semester_2020/_share/media/img/lecture01/ex01.png new file mode 100644 index 0000000000000000000000000000000000000000..26cdbcff0ed4bdd6579fe9f266c2290d3abb926c GIT binary patch literal 49953 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 literal 0 HcmV?d00001 diff --git a/gen/missing_semester_2020/_share/media/js/collapsible.js b/gen/missing_semester_2020/_share/media/js/collapsible.js new file mode 120000 index 0000000..c7c8b09 --- /dev/null +++ b/gen/missing_semester_2020/_share/media/js/collapsible.js @@ -0,0 +1 @@ +/Users/ronny/notes/_share/media/js/collapsible.js \ No newline at end of file diff --git a/gen/missing_semester_2020/_share/media/sass/missing-semester.sass b/gen/missing_semester_2020/_share/media/sass/missing-semester.sass new file mode 100644 index 0000000..fc4fd80 --- /dev/null +++ b/gen/missing_semester_2020/_share/media/sass/missing-semester.sass @@ -0,0 +1,93 @@ +@use "sass:map" +@use "sass:color" + +@use 'org-media-sass/default-org-mode' + +@use 'org-media-sass/themes/desert-oasis' as * +@use 'org-media-sass/fonts' as fonts +@use 'org-media-sass/mixins' as mixins-basic + +@include mixins-basic.set-header-sizes($default-header-sizes) +@include mixins-basic.set-header-colors($default-header-colors) +@include mixins-basic.set-header-margins-sides($default-header-margins-sides) +@include mixins-basic.set-header-margins-vertical($default-header-margins-vertical) + + +/* Base Styles */ +body + font-family: $primary-font + color: $text-color + background-color: $background-color + +/* Link Styles */ +a + color: $anchor-color + + &:hover + color: $anchor-hover-color + +// Lists +ul, ol + padding-left: $list-padding-left + +// Blockquotes +blockquote + border-color: $secondary-color + color: color.adjust($text-color, $lightness: 10%) + font-family: $secondary-font + +// Tables +table + color: $text-color + +th, td + border-color: $table-border-color + +th + background-color: $table-header-bg + color: $text-color + +tr:nth-child(even) + background-color: color.adjust($background-color, $lightness: 5%) + +/* Code Block Styles */ +pre, code + background-color: $code-background-color + color: $code-text-color + + font-family: $secondary-font + +/* Header Styles */ +h1, h2, h3, h4, h5, h6 + font-family: $secondary-font + +h4[id="timestamp"] + text-transform: uppercase + color: color.adjust(map.get($default-header-colors, 'h3'), $lightness: 10%) + +h4[id="playlist"] + color: color.adjust(map.get($default-header-colors, 'h3'), $lightness: -10%) +h3 + a + color: color.adjust($anchor-color, $lightness: -12%) + &:hover + color: color.adjust($anchor-hover-color, $lightness: -12%) + +// Notes +.note + background-color: $note-background-color + border-color: $note-border-color + color: $text-color + +div#postamble + border-color: $note-border-color + color: color.adjust($note-border-color, $lightness: 20%) + +/* Table of Contents Link */ +.toc + color: $primary-color + +div#table-of-contents ul li a + color: $toc-anchor-color + &:hover + color: $toc-anchor-hover-color diff --git a/gen/missing_semester_2020/_subsections/lesson-01.org b/gen/missing_semester_2020/_subsections/lesson-01.org new file mode 100644 index 0000000..4640115 --- /dev/null +++ b/gen/missing_semester_2020/_subsections/lesson-01.org @@ -0,0 +1,133 @@ +#+title: Lesson 01 | Course Overview + Shell +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +* Links +#+attr_html: :class links +- [[../toc.org][TOC | Missing Semester]] +- [[https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J][Playlist: Missing Semester]] + +*** timestamps +:PROPERTIES: +:CUSTOM_ID: timestamp +:END: + +#+attr_html: :class playlist +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=20s][00:20 why we're doing this class]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=251s][04:11 the shell]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=338s][05:38 install a terminal and a shell]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=364s][06:05 the shell prompt]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=411s][06:51 shell prompt]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=522s][08:42 how does the shell know what these programs are]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=672s][11:12 paths]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=738s][12:18 absolute path]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=759s][12:39 relative paths]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1034s][17:14 tilde character]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1336s][22:16 directories]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1376s][22:56 execute on directories]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1514s][25:14 cp command]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1547s][25:47 rm]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1590s][26:30 create a new directory]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1912s][31:52 pipe character]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2044s][34:04 grep]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2145s][35:45 the root user]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2239s][37:19 kernel paramters]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2612s][43:32 scroll lock led]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2706s][45:06 open a file]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2829s][47:09 lecture notes]] +- [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2875s][office hours]] + +* Notes +** why +- there are many tools that make life easier for programmers +- lecture notes and recordings are available online + +** the shell +- programs are meant to be integrates with each other through the shell +- most common shell is Bourne Again Shell (bash) + +** shell prompt +- typical shell prompt: + #+attr_html: :width 300px + file:../_share/media/img/lecture01/ex01.png + +- shells can be customized extensibly +- arguments are seperated by whitespace +- multiple words can be passed as a single argument via: + - quotes + #+begin_src bash + echo "Hello world" + #+end_src + + - escapes + #+begin_src bash + echo Hello\ world + #+end_src + +** how does the shell know where programs are +- via environment variable + - things that are set whenever you start your shell + - where is your home directory + - what is your username + - what are the PATHs to your programs +- shells, and bash in particular, are programming languages + +** paths +*** PATH environment variable + +- a list seperated by colons (:) +- when bash is asked to run a program bash will search through the directories in path until it finds the program + +*** absolute vs relative path + +- pwd: print working directory +- all relative paths are relative to your current working directory +- absolute path starts with '/' + +*** special directories +- '.' current directory +- '..' parent directory + +*** tilde (~) +- always expands to your home directory + +*** dash (-) +- toggles to the previous directory you were at + + #+begin_src bash + cd /home/ronny/programs/notes/courses + cd ../../ + cd - + pwd + #+end_src + +the output will be +=/home/ronny/programs/notes/courses= + +** permissions +*** groups of three +- read +- write +- execute + +*** directories +- read: are you allowed to see the files +- write: can you rename the files in the directory +- execute: "search" are you allowed to enter this directory + - to access a file in a directory, you need execute permissions on all directories in the path + +** piping +- every program has two streams + - input stream + - output stream +- shell allows you to change streams + - angle brackets + - left angle < : rewire input + - right angle > : rewire output + +- example + #+begin_src bash + echo hello > hello.txt + cat < hello.txt + #+end_src diff --git a/gen/missing_semester_2020/_subsections/lesson-02.org b/gen/missing_semester_2020/_subsections/lesson-02.org new file mode 100644 index 0000000..7c48d92 --- /dev/null +++ b/gen/missing_semester_2020/_subsections/lesson-02.org @@ -0,0 +1,288 @@ +#+title: lesson 02 | course overview + the shell +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +* Links +#+attr_html: :class links +- [[../toc.org][TOC | Missing Semester]] +- [[https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J][Playlist: Missing Semester]] + +- Curr: https://youtu.be/kgII-YWo3Zw?si=Wm8KLT1ggOGG8W-g&t=1692 + + +*** timestamps +:PROPERTIES: +:CUSTOM_ID: timestamp +:END: + +#+attr_html: :class playlist ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=54s][00:54 - control flow functions]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=227s][03:47 - sequential execution]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=425s][07:05 - standard input]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=444s][07:24 - error code]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=517s][08:37 - logical operators]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=603s][10:03 - concatenate commands]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=645s][10:45 - common substitution]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=675s][11:15 - process substitution]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=935s][15:35 - comparison operator]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=1173s][19:33 - curly braces]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=1359s][22:39 - python script]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=1707s][28:27 - man command]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=2175s][31:26 - finding files]] *current* ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=2190s][36:30 - grep]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=2573s][42:53 - fuzzy finder]] ++ [[https://www.youtube.com/watch?v=kgII-YWo3Zw&t=2649s][44:09 - history substring search]] + +* Notes + +** bash +*** spaces are critical with bash + - this works: + #+begin_src bash + foo=bar + echo $foo + #+end_src + + - this doesn't: + #+begin_src bash + foo = bar + echo $foo + #+end_src + + - the output of that will be + =zsh: command not found: foo= + + - what happens in the above example is that we are effectively calling the "foo" program with the arguments: "=" and "bar" + +*** quotes +- you can use double or single quotes to print a value + #+begin_src bash + echo "Hello" + #+end_src + #+begin_src bash + echo 'Hello' + #+end_src + +- double quotes can interpolate variables + #+begin_src bash + echo "Value is $foo" + #+end_src + + will return: =Value is bar= + +- single quotes can NOT interpoloate variables + #+begin_src bash + echo 'Value is $foo' + #+end_src + + will return: =Value is $foo= + +** sequential execution + +*** bash functions +- mcd.sh +#+begin_src bash +mcd() { + mkdir -p "$1" + cd "$1" + } +#+end_src bash + +- creates a function that can be executed after loading + - $1 is a global variable referring to the first parameter + +*** source +- using source mcd.sh + =source mcd.sh= + +- then carry out the function + =mcd testdir= + +- this will create a new directory and cd into it as per the definied functioned + +** error codes +*** commands to access codes or values +- $0 -- name of the script we are currently in + - if you run this in the shell it will display 'bash' +- $1->$9 -- the first through ninth argument given to a script +- $? -- the last error message +- $_ --- last argument of the previous call + +- !! -- recreates the last call with it's arguments + - use with sudo if you found your call needed a sudo and you don't feel like retyping it again + + #+begin_src bash + ls -lah + sudo !! + #+end_src + +*** code values +- boolean + - true returns an error code of 0 + - false returns an error code of 1 + +** using $@ and $* +- represents all the arguments passed to a script or a function as separate, individual strings. It preserves each argument as a distinct item, even if the argument contains spaces. + +*** key points about $@ +1. All Arguments: It refers to all the command-line arguments passed to the script. +2. Preserves Spaces: If an argument contains spaces, it is treated as a single argument. +3. Usage: It is commonly used in a loop to iterate over each argument. + +*** example +#+begin_src bash +./myscript.sh file1.txt "file with spaces.txt" file3.txt +#+end_src + +then $@ will be +=file1.txt "file with spaces.txt" file3.txt= + +*** differences between $* +- *$@* treats each argument as a sepearte item +- *$** treats all arguments as a single, combined string + + +** logical operators +- you can use the error return value in conditionals +*** example using the OR conditional + #+begin_src bash + false || echo "Oops fail" + "Oops fail" + #+end_src + +*** example using the AND conditional + #+begin_src bash + true && echo "this will print" + "this will print" + #+end_src + +** concatenate commands +- you caoncatinate commands using the semicolon: *;* + + #+begin_src bash + false; echo "this prints always" + "this prints always" + #+end_src + +** common substitution +- take the output of a command and put it in a variable + #+begin_src bash + foo=$(pwd) + echo $foo + "/Users/ronny/..." + #+end_src + +- this can also be done by placing that format in a string and it will expand the string + #+begin_src bash + echo "the pwd output is: $(pwd)" + "the pwd output is: /Users/ronny/..." + #+end_src + +** process substitution +*** description +Bash process substitution is a feature that allows you to use the output of a command or a process as if it were a file. It enables you to redirect input or output between processes in a flexible way without needing intermediate temporary files. + +*** Syntax +- creates a temporary file descriptor for the output of the command, which can be used as an input file in another command. + #+begin_src bash + <(command) + #+end_src +- creates a temporary file descriptor for writing to the command, which can be used as an output file in another command. + #+begin_src bash + >(command) + #+end_src + +*** examples +- this will take b, a, d, c and sort it so the result is 'a, b, c, d' + #+begin_src bash + sort <(echo -e "b\na") <(echo -e "d\nc") + #+end_src + +- this will list the files, send the list to *tee* which will split a portion off to the screen and the rest to grep, followed by text_files.txt + + #+begin_src bash + ls | tee >(grep "txt" > text_files.txt) + #+end_src + +#+begin_src bash +echo "Starting program at $(date)" # Date will be substituted +echo "Running program $0 with $# arguments with pid $$" + +for file in "$@"; do + grep foobar "$file" > /dev/null 2> /dev/null + + # when pattern is not found, grep has exit status 1 + # we redirect STDOUT and STDERR to a null register since we do not care about them + + if [[ "$?" - ne 0 ]]; then + echo "File $file does not have any foober adding one" + echo "# foobar" >> "$file" + fi +done +#+end_src + +- *$$* pid given for program +- *$#* number of arguments +- *$@* expands to all the arguments + - can be used in a for loop +- *2>* refers to STDERR +- *>* refers to STDOUT + +** test utility + +test is a bash utility that you can use to test the condition of a file. look at the man page for more info + +** curly braces +curly braces are used as a form of program command expansion. + +the braces contain a number of arguments seperated by commans that will expand into arguments for the program + +*** example +#+begin_src bash +touch foo{,1,2,10} +touch foo foo1 foo2 foo10 + +cp foo{,.old} +cp foo foo.old +#+end_src + +*** ranges +this takes the format {1..20} + +#+begin_src bash +touch directory{1..4}/foo{a..z}.txt +#+end_src + +** python scripts +*** making them bash executable +- reference the python compiler at the top of the file + - do it directly: + #+begin_src bash + #!/usr/local/bin/python + #+end_src + - use the env program to do so + #+begin_src bash + #!/usr/bin/env python + #+end_src + +*** args can be found through sys.argv[1:] + #+begin_src python +import sys +for arg in reversed(sys.argv[1:]): + print(arg) + #+end_src + +** checking for problems in bash scripts using 'shellcheck' +#+begin_src bash +shellcheck some_bash_script.sh +#+end_src + +- will tell you problems +- and warnings + +** man command +- works with both os, and installed tools +- 'tldr' is easier to read + +** find diff --git a/gen/missing_semester_2020/_subsections/lesson-03.org b/gen/missing_semester_2020/_subsections/lesson-03.org new file mode 100644 index 0000000..062c8a1 --- /dev/null +++ b/gen/missing_semester_2020/_subsections/lesson-03.org @@ -0,0 +1,38 @@ +#+title: Lesson 02 | shell tools and scripting +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +* Links +#+attr_html: :class links +- [[../toc.org][TOC | Missing Semester]] +- [[https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J][Playlist: Missing Semester]] + +* Notes + + +*** Playlist + +#+attr_html: :class playlist +1. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=20s][why we're doing this class]] +2. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=251s][the shell]] +3. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=338s][install a terminal and a shell]] +4. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=411s][shell prompt]] +5. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=522s][how does the shell know what these programs are]] +6. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=672s][paths]] +7. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=738s][absolute path]] +8. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=759s][relative paths]] +9. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1034s][tilde character]] +10. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1336s][directories]] +11. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1376s][execute on directories]] +12. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1514s][cp command]] +13. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1547s][rm]] +14. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1590s][create a new directory]] +15. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=1912s][pipe character]] +16. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2044s][grep]] +17. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2145s][the root user]] +18. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2239s][kernel paramters]] +19. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2612s][scroll lock led]] +20. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2706s][open a file]] +21. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2829s][lecture notes]] +22. [[https://www.youtube.com/watch?v=Z56Jmr9Z34Q&list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J&t=2875s][office hours]] diff --git a/gen/missing_semester_2020/toc.org b/gen/missing_semester_2020/toc.org new file mode 100644 index 0000000..6001773 --- /dev/null +++ b/gen/missing_semester_2020/toc.org @@ -0,0 +1,34 @@ +#+title: Missing Semester IAP 2020 +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +* Links +#+attr_html: :class links +- [[../../../course-listings.org][Courses Listing]] +- [[https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J][YouTube Playlist: Missing Semester]] + +*** playlist +:PROPERTIES: +:CUSTOM_ID: playlist +:END: + +#+attr_html: :class playlist +1. [[https://youtu.be/Z56Jmr9Z34Q?si=XHgfjMWOSx0lSUV8][Lecture 1: Course Overview + The Shell]] +2. [[https://youtu.be/kgII-YWo3Zw?si=yOa5im_cHzisLeZn][Lecture 2: Shell Tools and Scripting]] +3. [[https://youtu.be/a6Q8Na575qc?si=7cgWLJfBgtzVvUUC][Lecture 3: Editors]] +4. [[https://youtu.be/sz_dsktIjt4?si=l9M6_yIDqV1drxNS][Lecture 4: Data Wrangling]] +5. [[https://youtu.be/e8BO_dYxk5c?si=a6aWoJSVS13rQO1I][Lecture 5: Command-line Environment]] +6. [[https://youtu.be/2sjqTHE0zok?si=ArLpMvXhrtAsQnLH][Lecture 6: Version Control (git)]] +7. [[https://youtu.be/l812pUnKxME?si=BDElINPHWLHQzBcD][Lecture 7: Debugging and Profiling]] +8. [[https://youtu.be/_Ms1Z4xfqv4?si=tMk44R213bG70pCq][Lecture 8: Metaprogramming]] +9. [[https://youtu.be/tjwobAmnKTo?si=QnIhfVK8mJHCV6PU][Lecture 9: Security and Cryptography]] +10. [[https://youtu.be/JZDt-PRq0uo?si=7oCytjjvVaGSTDHr][Lecture 10: Potpourri]] +11. [[https://youtu.be/Wz50FvGG6xU?si=Gmp-YJZm0sR65GAa][Lecture 11: Q&A]] + +* Contents Overview +#+attr_html: :class contents-overview +- [[./_subsections/lesson-01.org][Lesson 01 | Course Overview + The Shell]] +- [[./_subsections/lesson-02.org][Lesson 02 | Shell Tools and Scripting]] +