BASH/C2/String-and-File-attributes/English-timed

From Script | Spoken-Tutorial
Revision as of 18:00, 8 December 2014 by Ranjana (Talk | contribs)

Jump to: navigation, search

Title of script: String and File Attributes comparison in Bash

Author: Ashwini Patil

Keywords: video tutorial, ==, !=, string compare, file attributes.


Time Narration
00:01 Dear friends, Welcome to the spoken tutorial on String and File Attributes comparison in Bash.
00:10 In this tutorial, we will learn
00:13 * String comparison and File attributes comparison
00:18 We will do this using a few examples.
00:22 For this tutorial, I am using
00:25 * Ubuntu Linux 12.04 Operating System and
00:30 * GNU BASH version 4.1.10
00:34 Please note, GNU Bash version 4 or above, is recommended to practise this tutorial.
00:42 Let us start with an introduction.
00:45 There are two ways to compare a string in Bash.
00:49 1) First: using == (equal to equal to) operator
00:53 To compare two equal strings.
00:56 2) Second: != (not equal to) operator.
00:59 To compare two not equal strings.


01:03 Let us look at an example.
01:06 I have a simple program here, that checks the user ID.


01:11 Open a file in your editor and save it as strcompare dot sh
01:19 Now, type the code as shown here, in your strcompare dot sh file.
01:26 Let me explain the code.
01:28 This is shebang line.
01:31 whoami command gives the username of the current user.
01:36 The if statement checks the output of the variable whoami against the string “root”.


01:44 We have used not-equal to operator here to compare the strings.
01:50 If the current user is not the root user, then it will echo this statement -
01:57 “You have no permission to run strcompare dot sh as non-root user.”


02:05 Here $0 (dollar zero) is the zeroeth argument which is a filename itself.
02:13 If the user is the root user, it will echo - “Welcome root!”
02:18 Then we have the exit statement for the program.


02:23 And here with fi we end the if statement.


02:28 Let us switch back to our slides to know more about the exit statement.
02:34 Every program returns an exit status.
02:38 A successful command returns a 0 (zero).
02:42 An erroneous command returns a non-zero value.
02:47 It can be interpreted as an error code.
02:51 We can customize return value of the exit statement .
02:56 Now, let's execute the program.
02:58 Open the terminal by pressing Ctrl+Alt and T keys simultaneously on your keyboard.
03:08 First, let's check the current user of the system.
03:12 Type whoami
03:15 Press Enter.
03:17 This will output the name of the current user.
03:21 Now let's make our script executable.
03:25 Type chmod +x strcompare dot sh


03:32 Type dot slash strcompare dot sh


03:37 The output is displayed as:
03:39 You have no permission to run dot slash strcompare dot sh as non-root user.
03:47 Now let's execute the same program as root user.
03:52 Type: sudo dot slash strcompare dot sh
03:58 It will prompt for an password.
04:01 Give your password here.
04:04 The output is displayed as: Welcome root!.
04:08 Now, let's learn about the file attributes comparison.
04:13 I already have a working example of the code.
04:17 In this program, we will check whether a given file exists or not.
04:23 file1 is the variable in which we save the path of the file.
04:29 -(hyphen) f command checks whether the file exists or not.
04:33 And whether it is a normal file.
04:37 If the condition is true, it will echo "File exists and is a normal file"
04:44 Else, it will echo "File does not exis"
04:48 Switch back to the terminal let us execute our file.
04:53 Type chmod plus x fileattrib dot sh


05:00 Type: dot slash fileattrib dot sh
05:05 The output is displayed as:


05:07 File exists and is a normal file.


05:11 Now we will check whether the file is empty or not.
05:16 Before executing our program, I will create an empty file named as empty dot sh.
05:24 Type gedit empty dot sh ampersand sign
05:31 Click on Save, close the file.
05:35 Let us replace - (hyphen) f attrib with - (hyphen) s attribute.
05:41 Replace the filename here as well.
05:45 Type empty dot sh
05:47 Now, replace the first echo statement with:
05:51 “File exists and is not empty”
05:54 And the second echo statement with:
05:57 “File is empty”


05:59 Click on Save.
06:01 Come back to the terminal.
06:03 Let me clear the prompt.
06:06 Let's execute.
06:08 Type dot slash fileattrib dot sh press Enter.
06:13 The output is File is empty.
06:17 Now, let us see another file attribute, which will check the write premission of any file.


06:24 Come back to our program.
06:26 Let us replace the - (hyphen) s attribute with - (hyphen) w.
06:32 Now replace the first echo statement with:


06:36 “User has write permission to this file”
06:40 And the second echo statement with:
06:43 “User doesn't have write permission to this file”
06:47 Click on Save.
06:49 I will use a different file for this example.
06:53 I will select a file, which is not a readable file or which does not have write permission.
07:01 Let me change the filepath to
07:04 “slash etc slash mysql slash debian dot cnf”
07:10 Click on Save.
07:12 Let us execute our program.
07:15 Press the up-arrow key. Press Enter.
07:19 We see that the output is displayed as:
07:21 User doesn't have write permission to this file.
07:26 Now, let us see another example based on file attributes.
07:31 In this example, we will check whether file1 is newer than file2.
07:38 Let us see the program.
07:40 Note that our filename is fileattrib2 dot sh
07:46 Let's go through the code.
07:48 Here we have two variables file1 and file2.
07:53 The two files have already been created and are empty.
07:58 Here we check whether file1 is newer than file2.
08:04 If the condition is true, we print file1 is newer than file2.
08:09 Else, file2 is newer than file1.
08:14 This is another if statement.
08:16 Here we check whether file1 is older than file2.
08:21 If the condition is true, we print file1 is older than file2.
08:27 Else, we print file2 is older than file1.
08:32 Come back to our terminal.
08:35 First, we will edit empty1 dot sh file
08:39 I will just add an echo statement in it.
08:42 Type: echo within doubel quotes Hiii after the double quotes greater than sign empty one dot sh. Press Enter.
08:53 Now, let us make our script executeable.
08:57 Type chmod plus x fileattrib2 dot sh
09:03 Now type dot slash fileattrib2 dot sh


09:09 We see the output as:
09:11 file1 is newer than file2
09:15 file2 is older than file1
09:19 Now let's edit empty2 dot sh file.
09:23 Here also I will add an echo statement.


09:27 Type echo within double quotes How are you after the quotes (greater than sign) >empty2 dot sh.
09:38 Let me clear the prompt.
09:41 Now let us execute our script again.
09:45 Press the up-arrow key.
09:47 Go to dot slash fileattrib2 dot sh Press Enter.


09:53 Now the output is displayed as:
09:55 file2 is newer than file1
09:59 And file1 is older than file2
10:03 This brings us to the end of this tutorial.


10:06 Let us summarise.
10:08 In this tutorial we learnt,
10:11 String comparison
10:12 file attributes
10:14 ==(equal to equal to)
10:16 != (not equal to)
10:17 -f (hyphen f)
10:18 -s(hyphen s)
10:19 -w(hyphen w)
10:21 -nt(hyphen nt)
10:22 and -ot (hyphen ot)attributes.
10:25 As an assignment
10:26 Explore some more attributes.
10:29 Ex: -r

-x

and -o

10:33 Watch the video available at the link shown below
10:36 It summarises the Spoken Tutorial project
10:40 If you do not have good bandwidth, you can download and watch it
10:45 The Spoken Tutorial Project Team
10:47 Conducts workshops using spoken tutorials
10:51 Gives certificates to those who pass an online test
10:55 For more details, please write to contact@spoken-tutorial.org
11:02 Spoken Tutorial Project is a part of the Talk to a Teacher project
11:06 It is supported by the National Mission on Education through ICT, MHRD, Government of India
11:14 More information on this Mission is available at the link shown below .
11:19 The script has been contributed by Fossee and spoken-tutorial team.
11:25 This is Ashwini Patil from IIT Bombay signning off.
11:29 Thank You for joining.

Contributors and Content Editors

PoojaMoolya, Pratik kamble, Ranjana, Sandhya.np14