Beginner Lab 1 - Unix, the Shell, OSS
Welcome to the first lab! Here are some commands you might find helpful:
cat, cd, emacs, file, grep, less, ls, man, nano, tar, wget, vim
Remember: Google and man
are your friends!
Shell spelunking
Everything should be done via the shell!
The purpose of this lab is to get you comfortable with using the shell for
things you might typically use a GUI for. While these tasks may seem simplistic
or limited, you’ll quickly find that the commands have many different options
(flags) to perform tasks that are either impossible or incredibly tedious /
difficult to complete using traditional methods.
-
ssh
into tsunami.ocf.berkeley.edu
using your OCF account, or login at
ssh.ocf.berkeley.edu
-
Run the following command to download the file we have provided:
wget https://decal.ocf.berkeley.edu/static/b1/b01.tgz
A .tgz
file is actually a composition of two file formats. Sometimes
you’ll see these files as .tar.gz
instead. A common (and old) way of
archiving is with magnetic tapes. However, in order to archive the data, it
needs to be a single file, and often you want to archive multiple files at
once. This is where the tar
command comes in (tar
stands for tape
archive). Tar will group (or ungroup) multiple files into a single one.
tar
, unless you ask it to, doesn’t compress files itself though. This is
where either gzip
(or bzip2
) comes in. gzip
will compress your file,
and so, tar + gzip is often used in conjunction. It looks something like
this: file --(tar)--> file.tar --(gzip)--> file.tar.gz
.
If you read the tar
documentation carefully enough, you’ll see that you
can give the command an option to compress your files using gzip
as well,
saving you a total of one line of shell command!
To unarchive the file we provide you, run the following command:
tar xvzf b01.tgz
. This will provide a b01
directory for you with some
files for the rest of this lab.
tar
has a reputation for being a bit tricky with its options:
-
Go into the b01
directory. Make sure you’re in there by running pwd
(Present working directory). What does pwd
give you?
-
There’s a hidden file in the b01
directory. What is the secret?
-
A malicious user made its way into my computer and created a message split
across all the files in nonsense/
. What does it say? (Hint: xargs
and
ls
will be helpful here.)
-
Go ahead and delete everything in nonsense/
with one command. How did you
do it?
-
There’s a file in b01
called big_data.txt
. It’s 80 megabytes worth of
random text. For reference, Leo Tolstoy’s “War and Peace”, the novel with a
whopping 57,287 words depicting the French invasion of Russia and the impact
of the Napoleonic era on Tsarist society through the stories of five Russian
aristocratic families with several chapters solely dedicated to
philosophical prose, is only 3.2 megabytes large.
For that reason, I don’t recommend using cat
to print the file. You can
try it, but you’ll be sitting there for a while. There’s some text you need
to find in there! Go find it without actually opening up the file itself!
(Hint: It’s a url)
Two lines above the URL is a secret solution. What is that solution?
Hint for this one: “Context Line Control”
-
Try executing ./a_script
. You should get something back that says
permission denied: ./a_script
. This is because files have three different
permissions: read, write, and execute. Which one does a_script
need? Change
the file permissions so that you can run the script.
-
Finally, there’s an empty file called hello_world
in the directory. Write
your name in it!
-
Finally, remember to submit your answers to Gradescope. There’s some
other questions you’ll have to answer and some feedback we’d like you to
fill out!
General Questions
Answer these questions on Gradescope. The assignment should be up
already. If you haven’t been added to the class yet, let a head
facilator know!
Feel free to use Google and work in a terminal (where applicable) to
verify your conjectures.
-
What differentiates Linux/OSX from operating systems like Windows?
-
What are some differences between the command line and normal (graphical)
usage of an OS?
-
What is the root directory in Linux filesystems?
-
I want ls
to do the following for me: Give me extra information such as
file permissions, owner, group, size, and late date edited. In addition, I
want to be able to see the size and have the files ordered by last date
edited, with the oldest files on top. How would I do this?
-
Instead of showing the first 10 lines of the file big_data.txt
, I want head
to show the first 4. How would I do that?
-
What’s the difference between cat foo > out.txt
and cat foo >> out.txt
?
Culture Questions
Next are some cultural questions about Linux and Open Source Software.
-
Briefly, what is the difference between permissive and copyleft licenses?
-
Give an example of a permissive license.
-
Give an example of (a) open-source software and (b) free, but closed-source
software that you use.