Commands.page Logo

How to Check if File Exists in Ubuntu Bash Script

This article provides a concise guide on verifying file existence within Ubuntu bash scripts to prevent execution errors. It outlines the specific test operators required for conditional checks and demonstrates practical code examples. Readers will learn how to implement robust file validation logic to ensure their automation tasks proceed only when necessary resources are available.

Using the Test Command

The most reliable method to check for a file is using the if statement combined with the test command operators. In bash, square brackets [ ] act as an alias for the test command. To check specifically for a regular file, use the -f flag. To check if any file system entry exists, including directories, use the -e flag.

Basic Syntax Example

if [ -f "/path/to/your/file.txt" ]; then
    echo "File exists. Processing..."
    # Add your processing commands here
else
    echo "File not found. Exiting."
    exit 1
fi

Using Variables Safely

When checking variables, always enclose them in double quotes to handle paths with spaces correctly. This prevents word splitting errors during execution.

FILE_PATH="/home/user/data/config.json"

if [ -f "$FILE_PATH" ]; then
    cat "$FILE_PATH"
else
    echo "Error: $FILE_PATH does not exist."
fi

Understanding File Flags

Selecting the correct flag ensures your script behaves as expected. The -f flag returns true only if the file exists and is a regular file. The -e flag returns true if the file exists regardless of type. The -r flag can be added to verify if the file is readable before processing.

if [ -f "$FILE_PATH" ] && [ -r "$FILE_PATH" ]; then
    echo "File exists and is readable."
fi

Conclusion

Implementing file existence checks is a critical step in writing stable Ubuntu scripts. By using the correct test operators and quoting variables properly, you can avoid common runtime failures. This practice ensures your automation workflows remain resilient against missing dependencies.