BASH/C2/String-and-File-attributes/English-timed
From Script | Spoken-Tutorial
| 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 practice 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 zeroth argument which is a 'file-name' 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 window 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 a 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 exist" . |
| 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 attribute 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 permission 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 file path 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 file-name 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 double quotes hiii after the double quotes greater than sign empty one dot sh. Press Enter. |
| 08:53 | Now, let us make our script executable. |
| 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 summarize. |
| 10:08 | In this tutorial, we learned: |
| 10:11 | String comparisonfile attributes |
| 10:14 | ==(equal to equal to) |
| 10:16 | != (not equal to)* -f (hyphen f) |
| 10:18 | -s (hyphen s)* -w (hyphen w) |
| 10:21 | -nt (hyphen nt) and -ot (hyphen ot) attributes. |
| 10:25 | As an assignment-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 summarizes 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, signing off. |
| 11:29 | Thank You for joining. |