Definitions

# $PATH
# Add to beginning of $PATH
PATH=~/opt/bin:$PATH
# Add to end of $PATH
PATH=$PATH:~/opt/bin
# Standard input & output
# Send output of command to a file instead of terminal
# Shell will create a file if it does not exist, if it does, the shell erases (clobbers) the original file first
command > file
# Append to file
command >> file
# Match every line that I type after that has 'this' in it and put the results in to hello_grep.txt file
grep this > hello_grep.txt
# Put all the lines matching 'line' into grep_output.txt file
grep line hello.txt > grep_output.txt
# >> Redirect output to append to FILE
grep line hello.txt >> grep_output.txt
# Redirect standard error stream to FILE
# where 2> means redirect output stream 2 to write results to the
# file and not to the terminal
find / -name 'story.txt' 2> error_log.txt
# 1> specifies stream ID 1 (standard output) (default)
# 2> specifies stream ID 2 (standard error)
# Sends both standard error and output to some location
ls /fffff > f 2>&1
- Accept - Specifies the file format the requester wants.
- Accept-Language - Specifies the human-readable language, like English, Spanish, or Russian.
- Cache-Control - Specifies whether the response can be generated from a cache.
# Globbing
# Shell can match simple patterns to file and directory names
# this process is known as globbing
# Simplest of these is the glob character * which tells the shell to match any number of arbitrary characters
# Print a list of files in current directory
echo *
# Shell matches arguments containing globs to filenames
# substititutes the filenames for those arguments, and then runs the revised command line
# the substitution is called expansion because the shell substitutes all matching filenames
at* # Expands to all filenames that start with at
*at # Expands to all filenames that end with at
*at* # Expands to all filenames that contain at
# Another shell glob character is (?) - it instructs the shell to match exactly one arbitrary character
# Match both boat and brat
b?at
# If you don't want the shell to expand a glob in a command, enclose the glob in single quotes ('')
# It is important to remember that the shell performs expansions before running commands
ASCII code
- ASCII is an encoding representing each typed letter by a number
- each number is stored in one byte (so the number is in 0..255)
- A is 65
- B is 66
- space is 32
- "Unicode" is an encoding for mandarin, greek, arabic, etc. languages
- typically 2-bytes per "letter"
![](https://i.imgur.com/qbFb4Ik.png)
HTTP status codes
- 200-299 are good
- 300-399 understood (located elsewhere)
- 400-499 error (404 = resource no longer exists)
- 400-599 server end (500 = some error on the server)
HTTP REST methods
- GET - Used for fetching either a collection of resources or a single resource.
- POST - Used to add a new resource to a collection.
- For example, we wouldn't POST to /players/567 or /games/1234 because they aren't collections.
- We would, however, POST to /players or /games to create a new player or a new game.
- PUT - Use when we want to update a record. We wouldn't use PUT on collection or list URLs.
- DELETE - Used for sending a DELETE request to a detail record, a URL for a single record, should delete just that record.
- Sending DELETE to an entire collection would delete the whole collection but that's usually not implemented, with good reason.