Jan 12, 2015

Shell Scripting: File Operations



In Shell scripting, we can perform lots of file based operations such as checking if file exists, checking if it's a directory, checking if it's a writable file and so on. 

For Example, following is a shell script that checks if the file "config_file.txt" exists.
 
#!/bin/bash
FILE="config_file.txt" if [ -f $FILE ]; then echo "File $FILE exists" else echo "File $FILE does not exists" fi

Following are the list of options available for file operations.

-a file
True if file exists.

-b file
True if file exists and is a block special file.

-c file
True if file exists and is a character special file.

-d file
True if file exists and is a directory.

-e file
True if file exists.

-f file
True if file exists and is a regular file.

-g file
True if file exists and is set-group-id.

-h file
True if file exists and is a symbolic link.

-k file
True if file exists and its ‘‘sticky’’ bit is set.

-p file
True if file exists and is a named pipe (FIFO).

-r file
True if file exists and is readable.

-s file
True if file exists and has a size greater than zero.

-t fd 
True if file descriptor fd is open and refers to a terminal.

-u file
True if file exists and its set-user-id bit is set.

-w file
True if file exists and is writable.

-x file
True if file exists and is executable.

-O file
True if file exists and is owned by the effective user id.

-G file
True if file exists and is owned by the effective group id.

-L file
True if file exists and is a symbolic link.

-S file
True if file exists and is a socket.

-N file
True if file exists and has been modified since it was last read.

file1 -nt file2
True if file1 is newer (according to modification date) than file2, or if file1 exists and
file2 does not.

file1 -ot file2
True if file1 is older than file2, or if file2 exists and file1 does not.

file1 -ef file2
True if file1 and file2 refer to the same device and inode numbers.

No comments:

Post a Comment