Bash Script – Check if file has read permissions
To check if a file is readable in bash, in other words if the file has read permissions, use [ -r FILE ] expression.
Syntax
The syntax of the expression to check if the file is readable or not is given below.
[ -r path/to/file ]replace path/to/file with the actual path to file, whose read permissions you need to check.
The expression returns a value of true if the file is present and has read permission, or a false if the file does not have read permissions.
Examples
For the sake of examples, we will use two files shown below.
$ ls -lr
total 125016
--w-------  1 root         root                12 Oct  5 09:35 sample.txt
-rwxr--r--  1 root         root                20 Oct  5 15:33 dummy.txtIf you observe the permissions for these files,
- sample.txt has no read permissions.
- dummy.txt has read permissions for all users.
1. Check if file is readable for dummy.txt
In the following example, we shall use -r expression, and check if the file dummy.txt is readable. We use the -r option as a condition in bash if else statement.
example.sh
#!/bin/bash
file="dummy.txt"
if [ -r "$file" ]
then
	echo "$file is readable."
else
	echo "$file is not readable."
fiBash Version: GNU bash, version 5.2.15(1)-release (aarch64-apple-darwin22.1.0)
Run this script file in a Terminal, and you shall see the following output, provided you have the file dummy.txt mentioned in your system.
Output
sh-3.2# bash example.sh 
dummy.txt is readable.2. Check if file is readable for sample.txt
In the following example, we shall use -r expression, and check if the file sample.txt is readable.
example.sh
#!/bin/bash
file="sample.txt"
if [ -r "$file" ]
then
	echo "$file is readable."
else
	echo "$file is not readable."
fiBash Version: GNU bash, version 5.2.15(1)-release (aarch64-apple-darwin22.1.0)
Output
sh-3.2# bash example.sh 
sample.txt is not readable.Conclusion
In this Bash Tutorial, we learned how to check if specified file is readable or not.
