Linux.com

Deciphering lines of code

Link to this post 21 May 09

Hey everyone I don't know if this is the right place to ask this question but I am trying to learn what different lines of code do and I need some help. I am looking at the Save command specifically. It was written to save files and back then up to a directory for later backup usage. The problem that I am having is in the first part of the code. For instance on this line

if [! -d $1];then echo $1 is not a directory; exit 1; fi

I know the fi means that the line is finished and the echo is a command to run the $1 file but what is the first part? Any help will be appreciated. Thanks

Link to this post 21 May 09

Well fi actually marks the end of the if statement (it's just "if" backwards). The [! -d $1] is performing a test on a passed value, which is being referred to by $1 (the 1st parameter). -d tests to see whether it is a directory. The ! negates the statement to make it check whether it is not a directory.

In English, it's saying "If the parameter passed is not a directory, then say '[value of parameter passed] is not a directory."

Here are more options you can use (although probably not a complete list):

-e file
-s non-empty file
-b block device
-c character device
-f a non-directory and non-device file
-p pipe
-h symbolic link
-r file has read permission
-w file has write permission
-x file has execute permission
-k has sticky bit set
-O you are the file owner
-G same group as you
-N modified since last read

Link to this post 21 May 09

Oh, I should have clarified the square brackets. Those just indicate that a test is being performed inside them, and it will return 0 (true) or 1 (false) to the if clause.

Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board