70 lines
2.4 KiB
Org Mode
70 lines
2.4 KiB
Org Mode
* Systems Programming Midterm Topics
|
|
1. Linux environment / shell commands
|
|
- Common commands
|
|
- Chmod/permissions
|
|
- Wildcards
|
|
- Input/output redirection
|
|
- Shell parsing steps
|
|
- Shell command resolution variables
|
|
- Shell vs environment and their inheritance
|
|
- Exit statuses
|
|
- Subshells / child shells
|
|
- Arithmetic (operators: expansion vs evaluation)
|
|
- Floating arithmetic in bash: how?
|
|
2. Bash Scripting
|
|
3. ~find~/~grep~
|
|
4. Regular expressions (BRE vs ERE)
|
|
5. ~sed~
|
|
|
|
NOTE: No AWK material will be covered on the exam
|
|
|
|
* Example Questions
|
|
1. Answer =True= or =False= for the following statements:
|
|
- [TRUE] The extended regular expression ~{0,1}~ is equivalent to the ~?~ quantifier?
|
|
- [FALSE] An exit status of ~0~ is used to indicate success.
|
|
- [FALSE] Given the string "abc123" the regex ~/[a-z]{1,3}/~ will produce a match of "a".
|
|
- [FALSE] The following loop will never execute:
|
|
#+begin_src bash
|
|
while [ 0 ]; do let i++; echo $i; done
|
|
#+end_src
|
|
- [TRUE] The following loop will never execute:
|
|
#+begin_src bash
|
|
while (( 0 )); do let i++; echo $i; done
|
|
#+end_src
|
|
- [TRUE] ~sed~ will emit the contents of the pattern space, including a trailing newline character, by default at the end of each input cycle.
|
|
- [FALSE] The following bash filename pattern will match all text files in the user's current directory:
|
|
#+begin_src bash
|
|
ls -la .*\.txt
|
|
#+end_src
|
|
- [TRUE] The ~source~ built-in executes the contents of a specified file within the current script (i.e. no subshell is utilized).
|
|
- [FALSE] ~grep~ uses extended regular expressions by default
|
|
2. Enter the octal number corresponding to the following Linux file permissions: ~rwxr-x---~
|
|
Answer: ~0750~
|
|
3. Write out the erroneous line numbers from the following script (hint there are six):
|
|
#+begin_src bash
|
|
data="./data"
|
|
org_data=/usr/local/courses/ssilvestro/cs3424/Spring21/assign1/
|
|
|
|
if [[ $# -eq 1 ]]; then
|
|
data = $1
|
|
else if [[ $# -eq 2 ]]; then
|
|
data = $1
|
|
orig_data = $2
|
|
fi
|
|
|
|
if [[! -d $data]]; then
|
|
echo "ERROR: data directory '$data' does not exist"
|
|
exit 1
|
|
fi
|
|
if [[ not -d $orig_data ]]; then
|
|
echo "ERROR: original data directory '$data' does not exist"
|
|
exit 1
|
|
fi
|
|
echo "rm -rf \"$data\"..."
|
|
rm -rf "$data"
|
|
|
|
echo "cp -r \"$org_data\" \"$data\"..."
|
|
cp -r "$orig_data" "$data"
|
|
#+end_src
|
|
Answer: ~4,5,6,7,9,13~
|