In this assignment you'll gain some more experience with shell commands and with writing short shell scripts.
General hint: Before trying to write and debug a script, it's very helpful to first work out the necessary commands by experimenting in a shell window.
Also, look at man
pages and other descriptions of commands. Sometimes options
are available that allow a single command to do something you want instead
of having to use several commands.
fleem
(and
nothing more)
is printed on standard out, and nothing is printed on standard error when
the command is entered.
You can precede your commands
with other commands (e.g., to create a file, run other commands, etc.) and/or
pass options or arguments to your commands. Solve this problem for each of the
commands listed below individually.echo, cat, ls, grep, !!In a text file called
problem1
describe your solutions, including
each command you use and a very brief explanation of it. And, yes, "nothing more" in the output means "nothing more".private
such that when you
run private foo
,
the entire subtree of the file-system starting at foo
(so just foo
if
it is a file, but foo
and all of its files and subdirectories
recursively if it is a directory) has its permissions changed as follows:
defprivate
such that entering source defprivate
would
make private
available in the current shell.bash
script combine
that takes 2 or more
arguments, call them f1, f2, ..., fn
. Script combine
should
work as follows:stderr
and exit.f1
already exists, print "Error: first file
exists" on stderr
and exit.f2, ..., fn
and
copy them to stdout
. Do not print any error messages from this step (for example
if some file does not exist or is a directory). Instead, any
such error messages should be written to f1
./dev/stdout
or /dev/stderr
.
These are not portable across *nix systems. Although they are found
on most versions of Linux, the problem can be solved without them.shift, $@, -lt, -a
.bash
script called datedlinecount
that works as follows:total
../datedlinecount log foo bar; ./datedlinecount
log foo*; cat log
might produce something like:Wed Jan 15 20:42:16 PDT 2014 4 foo 17 bar 21 total Wed Jan 15 20:42:17 PDT 2014 4 foo 3 food 7 totalHints:
shift, date, wc, $@
.bash
on our reference systems (klaatu
and the CSE virtual machine).Identifying information including
problem1
defprivate
combine
datedlinecount
If you wish, you
can combine your files into an archive (see the tar
command)
and turn that in as a single file. The choice is yours; do whichever
is most convenient.
(The drop box will allow you to turn in your homework up to two days late, if you choose to use one or two of your late days, but you are strongly advised to save your late days for later in the quarter when they may be much more useful.)