M01: Introduction to Operating Systems
TU1: Installing, configuring and exploting a computer system
ASIX1
Practical Exercise 4: Running basic command-line utilities. The linux directory tree
25-10-16

Practical Exercise 4: Running basic command-line utilities. The linux directory tree


GENERAL CONDITIONS
1- Deadline: 13-11-2016.
2- Send your report as a PDF file attached to an e-mail with the following specifications:
     a) E-mail address:
cf(at)collados.org or jordi.binefa(at)fje.edu depending who is your teacher
     b) File Name:
        b.1)
ASIX1 (Catalan): asix1_surname_name_m01tu01pr4.pdf
        b.2)
DAW1 (English): daw1_surname_name_m01tu01pr4.pdf
    
c) Subject:
       c.1)
ASIX1 (Catalan): asix1_surname_name_m01tu01pr4
       c.2) DAW1 (English): daw1_surname_name_m01tu01pr4
3- Make this report individually.
4- Left, right, top and bottom margins: 2cm.
5- Character format: a) Font: Arial, b) Size: 10, c) Questions typeface: Bold, d) Answers typeface: Regular

BASIC COMMAND-LINE UTILITIES AND THE LINUX DIRECTORY TREE: DOCUMENTATION

1- The Linux directory structure. Important files and their paths. Command tree
a) What is a directory and a directory tree?
b) Information about The Linux directory structure and important files paths.
c) The command-line tree 
is a recursive directory listing that shows the contents of a directory (including files and subdirectories) in a tree-like format.

2- man
a) An interface to the on-line reference manuals. If you want to know how a command works, you have to run the command:  man  command_name. For instance, if you want to know how the ifconfig command works you have to run: man  ifconfig, or if you want to know how the uname command works you have to run: man  uname.
b) Some manuals have two or more sections. If you are asked about what section you want to read, like for instance after running man uname:
man  uname
Man: find all matching manual pages (set MAN_POSIXLY_CORRECT to avoid this)
 * uname (1)
   uname (2)
   uname (1p)
   uname (3p)
Man: Quina pągina de manual voleu?
Man:
You have to choose the number between brackets and press enter.  If you do not select any option, the default option (option after *  symbol) will be chosen.
c)
Once your finished viewing a manual,  you can exit or close the manual by pressing the q key
 
3- ls
a) The ls command-line utility lists directory (folder) contents.
b) Examples:
    1) ls  --> Lists the contents of the present directory.
    2) ls  -ls --> Lists the contents of the present directory and  extra information about each file (owner, size, permissions,.....)
    3) If you want to list the contents of any folder, you have to write its path. For instance:
        ls  -ls  / --> Lists the contents (and extra informatiosn) of  the / directory.
        ls -ls  /home --> Lists the contents (and extra information) of  the /home directory.
        ls  -ls  /var/lib --> Lists the contents (and extra informatiosn) of  the /var/lib directory.
        ls -a --> Lists hidden files

4- cat

a) The cat command-line  displays the contents of a text file. For instance: cat  /etc/resolv.conf displays the contents of resolv.conf.
b) If  a text is longer than one screen,  you can use the special character | and the command more  that displays as much as can fit on the current screen and waits for user input (enter for a new line or space bar for a new screen)  to advance. For instance: cat /var/log/messages  |  more.

5- cd
a) Description: The cd command-line utility changes the current working directory to a new working directory.
b) Synopsis:  cd  directory_name where directory_name is the name of the new working directory.
c) Examples: cd  /home, cd /var/log, .......
d) Special cases:
    cd .  --> Changes to the current working directory. The "." character means "the current working directory".
    cd ..
-->
Changes to the parent directory of the current working directory. The ".." character means "the parent directory of the current working directory".
   
cd ~  --> Changes to the user's personal directory which is "/home/username". The "~" indicates the user's personal directory.
    cd -  --> Changes to the previous directory. The "-" indicates the previous directory

6- Special character * (asterisk)
a) The asterisk * character is a special character that causes the shell to generate filenames. It matches any number of characters in a filename. For instance, if you want a list of files in a folder that begin with the string "prov" then you can run the command: ls  -ls  prov*.
b) Example:
etpclot@etpclot:~>ls  -ls
amemo    memo              memoalx.0620    memosally     user.memo
mem        memo.0612     memoalz.keep    sallymemo
memalx    memoa            memorandum     typescript
etpclot@etpclot:~>ls  -ls  memo*      
memo      memo.0612    memoa    memoalx.0620    memoalx.keep    memorandum    memosally
(it shows all files in the working directory that begin with the string memo)
etpclot@etpclot:~>ls  -ls  *mo           
amemo    memo              sallymemo        user.memo
(it shows all files in the working directory that end with the string mo)                 
etpclot@etpclot:~>ls  -ls  *alx*     

memalx    memoalx.0620    memoalx.keep
(it shows all files in the working directory that contain the string alx)                 

7- cp
a) Description: The cp command-line utility copies one or more files and directories to a destination directory.
b) Synopsis:  cp source_file  destination_file where source_file is the name of the file that cp will copy, and  destination_file is the name that cp assigns to the new copy of the file. By default,  the  destination_file will be equal to the source_file.
c) Examples:
    cp  /var/log/messages
      /media/usb/  --> A file called messages in the directory /var/log will be copied in the directory /media/usb. The name of the new file will be messages.       
    cp  /var/log/messages   /media/usb/messages.20131110  --> /var/log/messages  will be copied in the directory /media/usb. The name of the new file will messages.20131110.
    cp  /var/log/*  /media/usb  --> All the files in the directory /var/log will be copied in the folder /media/usb
d) Note: you can use .,..,- and ~.

8- mv

a) Description: The mv command-line utility moves one o more source files and directories to a destination directory. The original files will be removed. Refers to cp for Synopsis and examples.
b) Note 1 : you can use the following special characters:  .  ..  -   ~
c) Note 2: You can use  mv to rename a file -->  mv  old_name  new_name
d) Note 3: You can use mv to move a directory --> mv  existing_directory  new_directory

9- mkdir
a) Description: The mkdir command-line utility creates a new directory..
b) Synopsis: mkdir  directory_name where directory_name is the name of the new created directory.
c) Examples:
     mkdir  test00  -> Creates a new directory called test00 as a child of the current working directory.
    mkdir  /home/etpclot/test01 -> Creates a new directory called test00 as a child of the /home/etpclot directory.
d) Note: you can use .,..,- and ~.

10- rm

a) Description: The rm command-line utility remove files or directories. By default it does not remove directories.
b) Synopsis 1: rm  file_name where file_name is the name of the file that will be removed. Example: rm /home/usuari/INDEX.gz.
c) Synopsis 2: rm  -r directory_name where directory_name is the name of the directory that will be removed. Example: rm  -r  /home/etpclot/test00.
d) Note 1 : you can use .,..,- and ~.
e) Note 2:  rm  !(filename) removes every file but filename. For instance si you run rm !(ex01.c), every file in the directory is removed but ex01.c.

11-
whereis
a) Description: The whereis command-line utility shows where the binary, source and manual page files are for a command.
b) Synopis: whereis  command_name, where command_name is the name of a command-line utiliy (for instance mkdir)
c) Example: whereis  mkdir
d) Some useful options are:
    -b: Searchs only for binaries.
    -m: Searchs only for manual sections.
    -s: Searchs only for sources.

12- locate
a) Description: The locate command-line utility finds (or locates) files by name.
b)
Synopis: locate  file_name, where file_name is the name of a file to localte. Shows directories where the file is stored.
c)
Example 1: locate  resolv.conf --> Shows directories where any file with the string "resolv.conf" in its name is stored   
d) Example 2: locate -b  '\resolv.conf' --> Shows directories where a file called "resolv.conf" is stored.   

13- gzip
a)Description: The gzip command-line utility compresses or expand files. A file compressed with gzip is marked by a .gz filename extension.
b) Synopsis 1: gzip  file_name where file_name is the name of the file that will be compressed. Example: gzip /home/etpclot/INDEX. After runing the command, the original file will be replaced with a new file called INDEX.gz.
c) Synopsis 2: gzip -d  file_name.gz where file_name is the name of the file that will be expanded. Example: gzip -d  /home/etpclot/INDEX.gz.After runing the command, the original file will be replaced with a new file called INDEX.
d)
Synopsis 3: gzip -l  file_name.gz where file_name is the name of a compressed file. -l lists the following fields:  size of the compressed file, size of the uncompressed file and uncompressed name.

14- tar

a) Description:
The tar command-line utility packs and creates a new single file, which will be marked by a .tar filename extension, from multiple files or directories hierarchies. The tar comand-line utility can extract (unpack) files from a .tar file as well..
b) Synopsis 1: tar cf  filename.tar  list_of_files where filename.tar is the name of the .tar file that will be created and list_of_files is a list of files (* can be used).
c) Synopsis 2: tar xf  filename.tar where filename.tar is the name of the packed file that will be unpacked.
d) Synopsis 3: tar cf  filename.tar  directory_name where filename.tar is the name of the .tar file that will be created and where directory_name is a directory that will be packed.
e) Synopsis 4: tar tf filename.tar shows the contents of filename.tar.
f)  Synopsis 5: tar rf  filename.tar new_file 
where new_file is the name of a file to be added to an exisiting .tar file.
g) Synopsis 6: tar df  filename.tar old_file  where old_file is the name of a file to be removed from an exisiting .tar file. 
g) Examples:
    tar  cf  test.tar  test00.c  test01.c  test02.c  asm.hex  TODO.txt --> Creating a
   a new file test.tar that packs test00.c  test01.c  test02.c  asm.hex and  TODO.txt
    tar  cf  test_c.tar  test*.c  -->
Creating a new file test.tar that packs .c files
 
   tar  xf  test.tar --> Unpacking test.tar
    tar  cf  home.tar  /home  --> Creating a new file home.tar that packs the content of /home
    tar  tf   test.tar 
--> Showing the contents of test.tar
   
tar  rf  test.tar  test07.c   --> Adding test07.c to test.tar
  
tar  --delete --file=test.tar  test00.c   --> Removing test00.c from test.tar 

15-nano: a text editor

a) Description: The nano command_line utility  is  a small, free and friendly plain text editor.
b)
ctrl-o: Saving the current file
c) ctrl-x: Saving the current file and exiting to the bash command-line interficie.

16- passwd
The passwd command-line utility changes passwords for users and groups accounts.
a) While an administrator may change the password for any account or group, a  normal user is only allowed to change the password for their own account.
b) I
f the password is accepted, passwd will prompt again and compare the second entry against the first.  Both entries  are  require to match in order for the password to be changed.
c) If an old password is present, the user is first promted for it and the password is compared agaisnt the stored one. After the user is authenticated, the  user  is  then prompted for a replacement password.
d) Care must be taken to not include special control characters or characters, which are not available on all keyboards.
 
PRACTICAL EXERCISE

1- Install tree on your system with the help of Synaptic. Show a list of your personal directory in a tree-like format.
2- Change to the  /usr/share/info directory step by step going through the tree of files and directories.
3- Go back to your personal directory using a single command.
4-
Change to the  /usr/share/info directory using a single command.
5-
Go back to your personal directory. List your hidden files, showing extra information (owner, permissions, etc...).
6- Show
to the on-line reference manual for the command mkdir. What is the porpouse of the -v argument?
6- Create a new directory called job in your personal folder.  Create another directory in your personal folder called tmp.
7- Change to /usr/share/info directory. Copy grep.info.gz and find.info.gz to ~/tmp.
8- Could you copy grep.info.gz to /etc. What is happening?.
9- Move
find.info.gz to ~/job. Check  the allocated size of this file. Expand the file. 
Check  the new allocated size of this file.
10- Copy  grep.info.gz in ~/tmp to your folder and change its name to test-HOWTO.gz.
11- Remove grep.info.gz from ~/tmp.
12- Remove the directories ~/tmp and ~/job.
13-
S
how all files in the /dev directory that contain the string "sd" and "tty".   
14- Copy /usr/share/info/grep.info.gz to ~, changing the name to INDEX.gz.Extract INDEx.gz. Display the contents of the file INDEX.Where is INDEX.gz?
15- Create a new directory called  ~/temporal. Copy
all files in the /bin directory that begin with the character "g" to ~/temporal. Pack all files in the ~/temporal directory in a new file called g_pack.tar.
16- With the exception of
g_pack.tar, remove all files in ~/temporal.
17- Compress g_pack.tar.
18-
Create a new directory called ~/temporalv1. Move ~/temporal/g_pack.tar.gz to ~/temporalv1.
19- Extract ~/temporalv1/g_pack.tar.gz. Unpack ~/temporalv1/g_pack.tar. Remove ~/temporalv1/g_pack.tar. List all files in ~/temporalv1.
20- Change to your directory. Pack ~/temporalv1 in a new file called dir_temporalv1.tar. Compress dir_temporalv1.tar. Remove ~/temporalv1.
21- List all files in your folder. Extract and unpack  
dir_temporalv1.tar.gz. Check if ~/temporalv1 exists another time. Check all files in the restored ~/temporalv1 directory.
22- Create a new directory called ~/bin. Move ~/temporal to ~/bin changing its name to tmpv1.
23- Where are the binary code of gzip and tar commands?.
24-Create a text file  in your personal folder using nano and  write:
# Script scr01.sh
#
#!/bin/bash
clear
echo "Hello $USER"
ls -ls ~
exit 0
Save the newly created text file  with the following specifications: a) File Name: script01.sh.
25- Show contents of script01.sh using cat.

26- Create a new directory called ~/test. Change to the newly created folder. Copy all files in /etc with the .conf extension. Pack hdparm.conf, host.conf and pam.conf in a new file called conf.tar. Show the contents of conf.tar.
27- Add apg.conf to conf.tar. Show the contents of conf.tar.
28- Remove host.conf from
conf.tar. Show the contents of conf.tar.
29-
Compress conf.tar. List the size of the compressed file, size of the uncompressed file and uncompressed name.
30- Locate the following files: fstab, grub.cfg and stdin.
31- Change your password to fjeclot01. Logo out and check that your new password works. (NOTE: If your new and old passwords do not work then, follow these steps: a) Select your virtual machine, b) Press Ctrl (Right) + F1, c) Gain access to the system as a root user, d) Change the user's password, e) Log out as a root user, f) Press Ctrl(Right) + F7 or F8, g) Gain access again as a normal user)