100% found this document useful (1 vote)
5K views

LinuxGym Answers

This document provides instructions for a series of exercises involving file system commands, VIM text editor commands, and file permissions. The exercises cover topics like creating and modifying files and directories, redirecting command output, searching and replacing text, and setting file permissions for different users. The goal is to practice common Linux tasks like navigating the file system, editing files, and managing access permissions on files and directories.
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
5K views

LinuxGym Answers

This document provides instructions for a series of exercises involving file system commands, VIM text editor commands, and file permissions. The exercises cover topics like creating and modifying files and directories, redirecting command output, searching and replacing text, and setting file permissions for different users. The goal is to practice common Linux tasks like navigating the file system, editing files, and managing access permissions on files and directories.
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 16

Chapter 1: Files, Directories and

Redirection
Grep is grabbing a line from a list
File system commands: ls -[lAa], mkdir, cd, pwd, cp, mv, rm
Standard output redirection (>)
Viewing files: cat, less, head, tail
Commands and their options: touch, cat, wc
1. Create a file
Create a file called "hello.world" (without the quotes). Hint: touch
Touch hello.world
2. Create a directory
Create a directory called "otherworld" (not including the quotes).
mkdir otherworld
3. Store a calendar
Store the 2008 calendar produced by the "cal" command in the file "calendar" with no modifications to the
output of the "cal" command. Hint: Standard output redirection using ">".
cal 2008 > calendar
4. List visible files
List all (non-hidden) files in the directory "/usr/local/linuxgym-data/gutenberg" and store this list into a file
called "listvis". Ensure that this is exactly the output of the command "ls".
ls /usr/local/linuxgym-data/gutenberg > listvis
5. List all files
By "all files" we refer to every file which is not a directory, including hidden files whose names begin with
".". List all files in the directory "/usr/local/linuxgym-data/gutenberg" and store this list into a file called
"allfiles". Ensure that this is exactly the output of the command "ls". (Hint: consider the "all" and "almost-all"
options in "man ls")
ls a /usr/local/linuxgym-data/gutenberg > allfiles
6. Top of file
The "cat" function prints out the contents of a file. For example "cat /usr/local/linuxgym-data/census/aj_malenames.txt" shows you an alphabetically ordered list of male names recorded by the US Census
Bureau. Because the list scrolls off the top of the screen, you can not easily read the first 10 names. The
"head" command solves this problem. Experiment with the "head" command and store the first 10 lines
from the file a-j_malenames.txt into a file called "first-ten-names.txt". (Hint: Redirect the output using ">")
10head /usr/local/linuxgym-data/census/a-j_malenames.txt > ten-names.txt
7. Merging files
The "cat" function which prints out the contents of a file, can be used to print the contents of several files by
giving it more than one argument. In the directory /usr/local/linuxgym-data/census/ there are two files: aj_malenames.txt and k-z_malenames.txt. Use "cat" to print out both of these files and store the output in a
file called "a-z_malenames.txt" in the correct order. (Hint: Redirect the output using ">")
cat /usr/local/linuxgym-data/census/a-j_malenames. txt k-z_malenames.txt > a-z_malenames.txt

-1-

8. File size
Look at the files in the directory /usr/local/linuxgym-data/teeny and indentify which is the smallest file. Copy
this file into your ch1-fdr directory. (Hint: cp, ls -l)
ls l /usr/local/linuxgym-data/teeny
cp (smallest) /usr/local/linuxgym-data/teeny/filename filename

-2-

Chapter 2: Elementary VIM


In preparation for the exercises in this chapter create a directory called "ch2-vim" in your home directory.
Copy the file "/usr/local/linuxgym-data/vimdata/tutor.txt" into your "ch2-vim" directory, change into the
directory and start editing the file "tutor.txt" using vim by calling: "vim tutor.txt" and following the instructions
within the file. If anything should go awry, just exit vim by (1) hitting Esc - the button at the top left of your
keyboard; and then (2) issuing the command ":x!"
To start over again, copy "/usr/local/linuxgym-data/vimdata/tutor.txt" into your "ch2-vim" directory and start
editing the file again.
For all the questions below, perform the operation on the file indicated and save it before marking the
question.
1. Insert text
Within your "ch2-vim" directory, create a file called "hw.txt", with only one line of text saying: "hello world"
(without the quotes) and save the file.
mkdir ch2-vim
Cd mkdir ch2-vim
vim hw.txt
i
hello world
Esc
:wq
2. Join lines
Copy the file "/usr/local/linuxgym-data/vimdata/wordlist.txt" into your "ch2-vim" directory. Edit the file so that
all of the text is on a single line with only a space (not a newline) between the words.
cp /usr/local/linuxgym-data/vimdata/wordlist.txt wordlist.txt
vim wordlist.txt
3. Delete a word
Copy the file "/usr/local/linuxgym-data/teeny/1mwsm10.txt" into your "ch2-vim" directory. Delete the first
word at the beginning of line 6 - and the space which follows it - and save the file, making absolutely no
other changes (Hint: dw)
cp /usr/local/linuxgym-data/teeny/1mwsm10.txt 1mwsm10.txt
6G
esc i
dw
:wq
4. Search and line deletion
Copy the file "/usr/local/linuxgym-data/gutenberg/07frd10.txt" into your "ch2-vim" directory. Delete the line
containing the word "opera-girls" - and save the file, making absolutely no other changes. (Hints: / and dd.)
cp /usr/local/linuxgym-data/gutenberg/07frd10.txt 07frd10.txt
vim 07frd10.txt
: /opera-girls
dd
:wq
5. Deletion by line numbers
Copy the file "/usr/local/linuxgym-data/gutenberg/0ws3110.txt" into your "ch2-vim" directory. Starting at line
50 delete 4000 lines (including line 50) - and save the file. Make absolutely no other changes.
cp /usr/local/linuxgym-data/gutenberg/0ws3110.txt 0ws3110.txt
vim 0ws3110.txt
G50

-3-

4000dd
:wq
6. Copy and paste by line numbers
Copy the file "/usr/local/linuxgym-data/teeny/3mwsm10.txt" into your "ch2-vim" directory. Delete the first 10
lines and append them to the end of the file. Save the file and make no other changes.
10yy
OR
10dd
GP
7. Delete to the end of a file
Copy the file "/usr/local/linuxgym-data/gutenberg/7wdvn10.txt" into your "ch2-vim" directory. Delete all the
lines from line 1024 to the end, including line 1024 and save the file.
G1024
(large number)dd
8. Search and replace strings
In the next two questions we have to distinguish between words and strings. A string is a sequence of
characters, while a word is a sequence of letters within a string, surrounded by non-word characters. For
example, the string "This is a testing time" contains the words "This", "is", "a", "testing" and "time". It does
not contain the word "test", but it does contain the string "test". Copy the file "/usr/local/linuxgymdata/vimdata/hermit.txt" into your "ch2-vim" directory. Replace every occurence of the string "and" with the
string "OR". Ensure you make no other changes to the file.
:%s/and/OR/gc
9. Search and replace words [1]
Recall that we have to distinguish between words and strings. A string is a sequence of characters, while a
word is a sequence of letters within a string, surrounded by non-word characters. For example, the string
"This is a testing time" contains the words "This", "is", "a", "testing" and "time". It does not contain the word
"test", but it does contain the string "test". Copy the file "/usr/local/linuxgym-data/vimdata/7herm10.txt" into
your "ch2-vim" directory. Replace every occurence of the word "and" with the word "OR". (Hint: make sure
you don't change words such as "sandy" into "sORy".)
:%s/<and>/OR/gc
10. Cut and paste by markers [1]
Copy the file "/usr/local/linuxgym-data/teeny/4mwsm10.txt" into your "ch2-vim" directory. Cut (remove) the
lines between (and containing) those with "START HERE" and "UPTO HERE" and insert them at the
marker "PASTE HERE". Save the file and make no other changes.
yy copy
dd- copy & delete
P paste

-4-

Chapter 3: People and Permissions


Chmod
7 = all
4 = read
3 = write & execute
2 = write
1 = execute
Topics covered: concepts: users and groups, permissions, standard error redirection (2>)
Commands and their options: whoami, ls -l, chmod, pwd
1. Who am I
The command "whoami" tells you your userid. Store your userid in the file "myuserid" in your ch3-pp
directory. (Hint: Redirect the output using ">")
mkdir ch3-pp
cd ch3-pp
Touch myuserid
Whoami > myuserid
2. Permissions
Create a file called textperm.txt with permissions as follows: You yourself have permission to read and
write; Your group has permission to read; The rest of the world have no permissions whatsoever.
Touch textperm.txt
chmod620 textperm.txt
3. Copy executable
There is only one file in the directory /usr/local/linuxgym-data/permissions which is executable. Copy this
file into your ch3-pp directory, giving it the name "executable.sh".
Cd /usr/local/linuxgym-data/permissions
ls l
cd ~/ch3-pp
Cp /usr/local/linuxgym-data/permissions(executable file name) executable.sh
4. Execute
Execute the file "executable.sh" which you copied in the previous question, and store the output in the file
"ex.out" in your ch3-pp directory. (Hint: Executing a file in the current directory requires the filename being
preceeded by "./". Storing the output is to be done using ">".)
touch ex.out
./executable.sh > ex.out
5. Copy my group file
There is only one file in the directory /usr/local/linuxgym-data/permissions which is assigned to your group.
Copy this file into your ch3-pp directory, giving it the name "myfile".
ls l /usr/local/linuxgym-data/permissions
cp (group file) myfile
6. Secret file
Create a file called "secret.txt" in your "ch3-pp" directory containing your name and telephone number.
Change the permissions of this file so that you can read and write to it, but no-one else can read or write to
it. Also ensure that no-one can attempt to execute (run) it.
touch secret.txt

-5-

vim secret
chmod 600 secret.txt
7. Small Bash script
The file "/usr/local/linuxgym-data/permissions/hw.sh" is a bash script. Copy it into your "ch3-pp" directory
and change the permissions so that you are able to execute it.
cp /usr/local/linuxgym-data/permissions/hw.sh hw.sh
chmod 740 hw.sh
8. Standard error preparation
Create a file called "forgotten.txt" in your "ch3-pp" directory. Change its permissions so that you are not
allowed to see its contents.
#cat = reads whats in da files and display them
cat > forgotten.txt
chmod 222 forgotten.txt
9. Standard error message
If you attempt the command "cat forgotten.txt" (as created in the previous question), because you do not
have permission to read it, there will be an error. The goal of this question is to store this error in a file
called stderr.out in your ch3-pp directory, making sure there are no additional characters or spaces. (Hint:
Do not attempt to edit this file by hand. The ">" operator redirects the standard output while the "2>"
operator redirects the standard error.)
cat > stderr.out
cat forgotten.txt 2> stderr.out

-6-

Chapter 4: Piping and Wildcards


Concepts: pipes (|), appending (>>, 2>>), wildcards(*,?,[]), recursive list and copy. Commands and their
options: wc -[mwl], tail -n, ls -[Rrt], cp -r.
wc: displays a count of lines, words, and characters in a file.
wc m: Count characters.
wc w: Count words delimited by white space characters or new line characters.
wc l: Count lines.
tail: Delivers the last part of the file.
tail n: n = number the starting location in the file is measured in lines instead of bytes. The origin for counting is 1; that
is, -n+1 represents the first line of the file, -n-1 the last.
ls: Lists the contents of a directory.
ls R: Includes the contents of subdirectories.
ls r: Reverses the order of how the files are displayed.
ls t: Shows you the files in modification time.
cp: Copies files from one location to another.
cp r: copy directories recursively
>> : append standard output to a file (command >> file)
*: wildcard match any number of characters
?:wildcard match one character

1. Word count redirect


Use the command "wc" to count the number of words in the file "/usr/local/linuxgymdata/gutenberg/0ws0310.txt". Store the exact output of the wc command when used with the "word counts"
option in the file "count.txt". Ensure that the filename within the file contains the full pathname. (Hint: Use
redirect ">").
wc -w /usr/local/linuxgym-data/gutenberg/0ws0310.txt > count.txt
2. Character count piping
Experiment by using the command "cat | wc -m", typing a few lines, and then using ctrl-D to return to the
command prompt. This outputs a single number indicating the number of characters you've typed. Unlike
the previous question, no filename is printed. Modifying this technique, store the number of characters of
the file /usr/local/linuxgym-data/gutenberg/0ws0310.txt into a file called "pipecount.txt" with no other text,
such as the filename.
cat | wc m
type a few lines
ctrl d
cat /usr/local/linuxgym-data/gutenberg/0ws0310.txt | wc m > pipecount.txt
3. Wild list
List all the files in the directory /usr/local/linuxgym-data/emptystuff/ which contain the string 'ws' in their
filename, and put the result in a file called "wsfiles.txt". Do NOT include the full path, and ensure that there
is only one filename per line. (HINT: To avoid getting the full pathname for each file, change directory to
/usr/local/linuxgym-data/emptystuff/ so that the ls argument refers to local files.)
touch wsfiles.txt
cd /usr/local/linuxgym-data/emptystuff/
*ws* > ~(ect)/wsfiles.txt
Ls *ws* > /home/student/ch4-pipelines/wsfiles.txt
4. View the end of a file
Store the last 103 lines of the file "/usr/local/linuxgym-data/gutenberg/4mwsm10.txt" into the file
"lastlines.txt". [Hint: Look at the bash function "tail" and its options]

-7-

touch lastlines.txt
cat lastlines.txt | tail -103 > lastlines.txt
5. Append the output
Copy the file /usr/local/linuxgym-data/census/a-j_malenames.txt to a file called appendix.txt in your ch4pipewild directory. Append to appendix.txt the contents of /usr/local/linuxgym-data/census/kz_malenames.txt making no other modifications. [Hint: cat, ">>"]
touch appendix.txt
cp /usr/local/linuxgym-data/census/a-j_malenames.txt appendix.txt
cat usr/local/linuxgym-data/census/k-z_malenames.txt >> appendix.txt
6. Listing according to a regular expression
Make a list of all the files from the directory "/usr/local/linuxgym-data/gutenberg" who's names contain the
string "rd" and save this list as "rdfiles.txt". Ensure that only the filenames are listed WITHOUT the
pathnames as a prefix.
touch rdfiles.txt
cd /usr/local/linuxgym-data/Gutenberg
ls *rd* > path/filename.txt
7. Copying according to a regular expression
Create a directory called "s2" under your "ch4-pipewild" directory. Copy all the files from the directory
"/usr/local/linuxgym-data/gutenberg" who's names contain the string "s2" into your "ch4-pipewild/s2"
directory.
mkdir s2
cp *s2* /usr/local/linuxgym-data/Gutenberg
or
cd usr/local/linuxgym-data/Gutenberg
ls | grep s2 | xargs cp {} ~/ch4-pipewild/s2
mkdir s2
cd usr/local/linuxgym-data/Gutenberg
ls | grep s2
for i(means every variable) in $( ls | grep s2 ); do cp $i /home/student/ch4-pipeline/s2; done
8. Listing files ordered by their modification time
List the (visible AND hidden) files in the directory "/usr/local/linuxgym-data/spacetime" from least, to most
recently modified. Store this list into the file "timeordered.txt", with only the filenames.
touch timeordered.txt
cd /usr/local/linuxgym-data/spacetime
ls at > ~(etc)timeordered.txt
9. Copying a directory
Copy the whole directory "/usr/local/linuxgym-data/teeny" and its contents into your "ch4-pipewild"
directory. [Hint: You can do it with just one call of cp and recursion.]
cp r /usr/local/linuxgym-data/teeny teeny
10. Listing files ordered by their size
List the (non-hidden) files in "/usr/local/linuxgym-data/gutenberg" ordered by size from large to small, and
store this list in a file called "large_to_small" in your "ch4-pipewild" directory. Include only the file names.
Do not include the path prefixes.
touch large_to_small
cd /usr/local/linuxgym-data/Gutenberg
ls S > ~/ch4-piplewild/large_to_small

-8-

-9-

Chapter 5: Introduction to Scripting


Scripts are files containing a sequence of commands which can be executed by typing the file name - don't
forget to ensure the file is executable. The first line in a bash script should always be: #!/bin/bash
Topics and commands covered: shebang (#!), echo, parameters ($#, $0, $1, $*,...), assignment (=),
arithmetic operators.
CHMOD ALL FILES 777
1. Hello world
Create a script called "print.sh". This script should print out the string: "Hello world" (do not include the
speech marks/inverted commas in the output). [hint: echo]
#!/bin/bash
echo Hello World
2. Echo one parameter
Write a bash script called arg.sh which will print out the SECOND argument to the script. For example, if
the script was called as ./arg.sh ay bee cee then the script will output bee and NOTHING ELSE.
#!/bin/bash
echo $2
3. Echo all parameters
Write a bash script called "args.sh" which will print out each argument passed to it. Each argument should
be separated by a space only.
#!/bin/bash
echo $@
4. Sum of two parameters
Create a script called add.sh in your home directory. This script should add 724 to its first argument and
print out the sum. The sum should be the only thing printed out.
#!/bin/bash
sd=724
sum= $(( $1 + $sd))
echo $sum
5. Product of two parameters
Create a script called mult.sh in your home directory. This script should multiply its first argument by 13 and
print out the product. The product should be the only thing printed out.
#!/bin/bash
(we didnt know the rest)
6. Number of arguments
Write a bash script called numargs.sh which will print out the number of arguments to the script. For
example, if the script was called as: ./numargs.sh ay bee cee then the script will output: 3 and NOTHING
ELSE.
#!/bin/bash
echo $#
7. Echo to standard error
Write a bash script called "stderr.sh" which will print out all arguments passed to it on a single line sent to
STDERR.

- 10 -

#!/bin/bash
echo $* 1>&2
OR
echo $* @>&2
OR
echo $@ls
8. List to standard error
Write a bash script called "lsstderr.sh" which will execute ls on the first argument and output the result to
STDERR.
ls $1 > &2
The input stream is referred to as ''standard input''; the output stream is referred to as ''standard
output''; and the error stream is referred to as ''standard error''. These terms are abbreviated to form
the symbols used to refer to these files, namely stdin, stdout, and stderr.

Redirection in Linux
&0 = stdin
&1 = stdout
&2 = stderr

9. Word count script


Write a bash script called wcscript.sh which will perform the word count on the first argument (a file), and
print out the number of words it contains and nothing else. For example, if the script were called on a file
a.txt containing 95 words with ./wcscript.sh a.txt it will output: 95 and NOTHING ELSE. [HINT: use "cat" to
provide standard input to wc]
unknown
cat $1 | wc w
10. Check number of arguments
Write a bash script called "checknumargs.sh" which will echo to STDOUT all arguments passed to it on a
single line IF THE NUMBER OF ARGUMENTS IS 3. If the number of arguments is not 3, then it should
echo "error" to STDERR.
unknown
echo error 1>&2
if [ $# = 3 ]
then echo $* > &1
exit
fi

- 11 -

Chapter 6: Data Processing


In this chapter we will utilise the skills attained in previous chapters to analyse statistics on the popularity of
female names. The data to be analysed is in the file /usr/local/linuxgym-data/census/femalenames.txt with
each line conaining NAME, FREQUENCY, CUMULATIVE FREQUENCY, and RANK, where RANK=1 is the
most popular name. The file is ordered by RANK.
Topics and commands covered: - searching through data (grep -[lvw]); - comparing contents of files (diff); data manipulation (uniq, sort, join).
1. List manipulation
Create a file called "table.csv" containing all the lines of /usr/local/linuxgym-data/census/femalenames.txt
with all white space between words changed into a single comma. For example, the line: MARY 2.629
2.629 1 will become MARY,2.629,2.629,1 Make no other changes. Hints: 1. Notice that the regular
expression "\s\+" means "a sequence of one of more white spaces". 2. Ensure there is no extra whitespace
in the file
cat /usr/local/linuxgym-data/census/femalenames.txt > table.csv
Vim table..csv
:%s/\s\+/,/g
:%s(substitute on every line in the file)/abc/ABC/g(replace all occuraences in the line not just the
first)
\s\+ = white space
2. List sorting
Create a file called "alphabetical.txt" in your "ch6-data" directory containing the lines of /usr/local/linuxgymdata/census/femalenames.txt ordered alphabetically by NAME. Ensure that there are no other changes to
the data. (Hint: Use "sort" and redirection.)
vim - insert mode
: sort
Or
Cat /femalenames.txt | sort > alphabetical.txt
3. List cut
Create a file called "names.txt" containing only the first column of /usr/local/linuxgymdata/census/femalenames.txt in its existing order. Ensure that there are no other changes to the data.
(Hint: Use the command "cut" together with its field and delimiter options.)
vim - insert mode
cut f1 d (filename/path) > filename.txt
Or
Cat femailes.txt | cut f1 d > names.txt
-f1(field 1 to be printed), -d (the comma is the delimiter which separates the fields)
4. Search prefix
Create a bash script called searchprefix.sh which takes two arguments, a string and a file (in that order).
The output should be each line which matches the string *from the beginning of the line*. For example,
given a string "ANA" the line starting with "ANABEL" will be printed, but the line starting with "SUSANA" will
not. (Hint: Use grep and ^ to indicate the beginning of the line).
vim
#!/bin/bash
cat $2 | grep ^$1
5. Multiple file string detection
Create a file called "anne-files.txt" containing the list of names of files in /usr/local/linuxgym-data/gutenberg
which contain the STRING 'Anne' inside them (including Annemarie and Annetta). Ensure there is one
filename per line (WITH THE FULL PATHNAME), that there are no extra blank lines in anne-files.txt, and
that no filename occurs more than once. Each line should ONLY contain the filename, no additional detail.
[Hint: use grep]

- 12 -

vim
egrep l Anne path/filename/* > filename.txt
Grep -l Anne /Gutenberg/* > anne-files.txt
(-l, -- files with matches only print FILE names containing matches)
6. Grep and words
Create a file called "anne-words.txt" containing only the lines of "/usr/local/linuxgymdata/gutenberg/12frd10.txt" containing the name (WORD) 'Anne'. Note that 'Annette' and 'Annemarie' do
not count. Ensure there are no extra blank lines in the file "anne-words.txt" and the lines should be in the
same order as in 12frd10.txt. [Hint: use grep and redirection]
egrep w Anne path/filename > filename.txt
Grep w Anne /Gutenberg/12frd10.txt* > anne-words.txt
(-w, ---word regexp force PATTERN to match only whole words)
7. Grep and regular expressions
Create a file called "natmat.txt" containing, IN THE ORIGINAL ORDER, only the lines of
/usr/local/linuxgym-data/census/femalenames.txt starting with the string 'NAT' or 'MAT'. Ensure there is no
extra white space in the file "natmat.txt". [Hint: use regular expressions in grep and redirection]
egrep ^[NM]AT path/filename > filename.txt
Or
Grep \<[NM]AT ../femalenames.txt > natmat.txt
(\<, \> the beginning and end of a world
^, $ match the beginning and end of a line, respectively,
. full-stop matches any character.)
8. Name frequency
Create a bash script called namefreq.sh which takes one argument - a name. The output should be the
FREQUENCY of that name's use, which is the entry in the second column of /usr/local/linuxgymdata/census/femalenames.txt For example ./namefreq.sh ANA will return 0.120 and nothing else, which
corresponds to the line "ANA,0.120,55.989,181" of the file "table.csv" you created in the "List manipulation"
question. Hints: 1. Search "table.csv" instead of "/usr/local/linuxgym-data/census/femalenames.txt"; 2.
Grep for "words" rather than strings. 3. Use "cut" to output a particular field.
grep w $1 filename.txt | cut f2 c16-20
(-w for word ANA)
(-c16-20, cut from character number16 to 20)
9. Single file word detection
Write a bash script called gender.sh which takes one argument - a name. The script should print "female" if
the word appears in the file /usr/local/linuxgym-data/census/femalenames.txt, and "male" otherwise. Hints:
1. Redirect stdout so it doesn't get printed, or use the grep "quiet" option; 2. View the exit status $? of grep
vim
#!/bin/bash
egrep iq $1 path/filename
if [ $? == 0 ]; then
echo female
else
echo male
fi
10. Same frequency
Challenge question Create a bash script called samefreq.sh which takes one argument - a name. The
output should be the alphabetically ordered list of all name's with the same frequency (popularity) as
measured in the second column of the table: /usr/local/linuxgym-data/census/femalenames.txt For example
./namefreq.sh ANA will return a list of two names (on separate lines) ANA and RENEE, both of which have
frequency 0.120. Hints: 1. Instead of "/usr/local/linuxgym-data/census/femalenames.txt" search "table.csv"

- 13 -

(created in the question "List manipulation" of this chapter) using words rather than strings; 2. Store the
frequency of the name using backquotes; 3. Search for the frequency while viewing only the first two
columns (use cut) - name and frequency; 4. Sort the final list of names.
vim
#!/bin/bash
f=` grep \<$1\> filename.txt | cut f2 d,` ( ` not )
grep \<$f\> filename.txt | cut f1 d, | sort d

- 14 -

Chapter 8: Web Development


1. Html elementary
Create a web page accessible at the URL http://localhost/~student/text.html and within this page insert five
headings from largest to smallest heading types. Insert also at least two paragraphs of text, and make
some of the text in this page "bold" and some of it "emphasized".
vim filename.html
<html>
<bold> </bold>
<em> </em>
<h1> </h1> x 5
</html>
2. Html hyperlink
Create an HTML web page accessible at the URL http://localhost/~student/extlink.html with exactly one
anchor tag linking to http://www.google.com
vim extlink.html
<html>
< a href = http://www.google.com>
3. Html preformat
Create a web page accessible at the URL http://localhost/~student/preformat.html and within this page
insert two elements: one paragraph, and one block of preformatted text.
vim preformat.html
<p></p>
<pre></pre>
4. Html list
Create a web page accessible at the URL http://localhost/~student/list.html. Create within this file only one
ordered list with 4 list items. The items may contain any text or html. (You can check your answer by
browsing to http://localhost/~student/list.html)
vim list.html
<html>
<ol>
<li> coffee </li>
<li> milk </li>
<li> hot chocolate </li>
<li> tea </li>
</ol>
</html>
5. Html table
Create a web page accessible at the URL http://localhost/~student/table.html containing a table with 2 rows
and 4 columns, each cell containing a small amount of text.
vim table.html
<tr> </tr> x 2
<td> </td> x 4
6. Html picture
Copy the image file /usr/local/linuxgym-data/public_html/fish.jpg into your public_html directory. It should be
viewable by following the link http://localhost/~student/fish.jpg Create an HTML web page accessible at the
URL http://localhost/~student/picture.html displaying the fish.jpg image, together with some explanatory
text.

- 15 -

cp /usr/local/linuxgym-data/public_html/fish.jpg fish.jpg
vim picture.html
<html>
<img src = fish.jpg alt = Big Fish>
</html>
7. Html index
An index.html file is automatically accessed by the browser without specifying the filename. The goal of this
exercise is to create an HTML web page accessible at the URL http://localhost/~student/ As the "front
page" of this chapter, give the index.html page links to several other pages in your public_html directory
without using "http" in the address. This is called a "relative link". (A link using "http" in the address is called
"absolute".)
vim index.html
<html>
<a href = picture.html>
<a href = table.html>
etc
</html>

- 16 -

You might also like