Here is a general outline of the key concepts and commands (arranged by topic) that you should know for Exam 01.
What is Unix?
What is a shell?
How would do you use git to:
Create a copy a repository.
View the changes you've made.
Save a change you've made.
Share the changes you'ved made.
Retrieve the changes from a remote location.
What are environment variables? What does the PATH
environment
variable control? How would you modify it?
Version control system for managing our files.
What is a file?
What is the general layout or hierarchy of a typical Unix filesystem?
What is an inode and what information does it store?
What is the difference between an absolute and relative path?
How do Unix file permissions work? How would you set them to restrict access for certain operations and certain classes?
You should be able to translate from octal to rwx
triplets and
back.
What is the difference between a hard link and a soft link?
List the contents of a directory (long, human-readable, sorted)
Set permissions using octal and symbolic arguments.
View the inode information fora file.
View the total disk usage for a file or directory.
Create hard and soft links.
Search directory for files by name and type.
What is a process? What attributes does it have?
What does it mean to signal a process? What do different the
different signals do (TERM
, INT
, KILL
, HUP
)?
How do we suspend, foreground, and background a process?
List the processes for the current user and for the whole system.
Interactively view and manage processes.
Signal a process by PID.
Measure how long it takes a process to execute.
Signal a process by name.
What three files does every process start with?
How do you redirect the output of a command into a new file?
How do you redirect the output of a command and append it to a file?
How do you redirect the output of one command as the input to another?
How do you direct the contents of a file into the input of command?
What is /dev/null
? How would you use it to output stderr
but ignore
stdout
of a program?
What is a here document and how would you use it?
What is bandwidth and latency? How are they different? How would we measure both of them?
What is an IP address? How is a domain name related to it?
What is a network port?
What is the basic difference between TCP and UDP?
How does HTTP work? How would you manually perform a HTTP request?
Transfer a file from one machine to another.
List the IP addresses of the current machine.
Maintain a persistent shell session.
General purpose tools to communicate with TCP-based network services.
Communicate using HTTP (ie. download files from the web).
What exactly happens when you compile a program (ie. describe the
compiler pipeline)? What are do the compiler flags -std=c99
,
-Wall
, -g
, and -O2
do?
What is the difference between a dynamic executable and a static executable?
What is a shared library? How does the environment variable
LD_LIBRARY_PATH
affect shared libraries? How do we list the shared
libraries an executable requires?
How does make work?
You should be able to write Makefiles
that utilize rules,
pattern rules, variables, and magic variables.
What are some different ways to debug an application? How would you track down a memory error?