Bird
Raised Fist0
Bash Scriptingscripting~5 mins

File test operators (-f, -d, -e, -r, -w, -x) in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the -f file test operator check in a bash script?
The -f operator checks if a given path is a regular file (not a directory or special file).
Click to reveal answer
beginner
How do you test if a directory exists using bash file test operators?
Use the -d operator to check if a directory exists at the given path.
Click to reveal answer
intermediate
What is the difference between -e and -f operators?
-e checks if a file or directory exists (any type), while -f checks specifically for a regular file.
Click to reveal answer
beginner
Which file test operator checks if a file is readable?
The -r operator checks if the current user has read permission on the file.
Click to reveal answer
beginner
Explain what -w and -x operators check in bash.
-w checks if the file is writable, and -x checks if the file is executable by the current user.
Click to reveal answer
Which operator would you use to check if a file exists regardless of type?
A-d
B-f
C-e
D-r
What does the -d operator test for?
AIf a directory exists
BIf a regular file exists
CIf a file is readable
DIf a file is executable
If you want to check if a file can be executed, which operator do you use?
A-r
B-w
C-f
D-x
Which operator would confirm a file is writable?
A-r
B-w
C-e
D-d
What does -f specifically check?
AFile is a regular file
BFile is a directory
CFile exists (any type)
DFile is executable
Describe how you would check if a file exists and is readable in a bash script using file test operators.
Think about testing existence first, then readability.
You got /4 concepts.
    Explain the difference between checking if a path is a directory versus a regular file using bash file test operators.
    Directories and files behave differently in scripts.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which file test operator checks if a path is a regular file in a bash script?
      easy
      A. -e
      B. -f
      C. -d
      D. -x

      Solution

      1. Step 1: Understand the meaning of each operator

        -f checks if the path is a regular file, -d checks for directory, -e checks if the path exists, and -x checks if the file is executable.
      2. Step 2: Match the operator to the question

        The question asks for the operator that checks if a path is a regular file, which is -f.
      3. Final Answer:

        -f -> Option B
      4. Quick Check:

        Regular file check = -f [OK]
      Hint: Remember: -f means file, -d means directory [OK]
      Common Mistakes:
      • Confusing -f with -d
      • Using -e which only checks existence
      • Mixing -x (executable) with file type
      2. Which of the following is the correct syntax to check if a directory exists in bash?
      easy
      A. if [ -f /path/to/dir ]; then echo "Exists"; fi
      B. if [ -x /path/to/dir ]; then echo "Exists"; fi
      C. if [ -e /path/to/dir ]; then echo "Exists"; fi
      D. if [ -d /path/to/dir ]; then echo "Exists"; fi

      Solution

      1. Step 1: Identify the operator for directory check

        -d is used to check if a path is a directory.
      2. Step 2: Verify the syntax correctness

        The syntax if [ -d /path/to/dir ]; then ... fi is correct for checking directory existence.
      3. Final Answer:

        if [ -d /path/to/dir ]; then echo "Exists"; fi -> Option D
      4. Quick Check:

        Directory check uses -d [OK]
      Hint: Use -d to check directories, not -f or -x [OK]
      Common Mistakes:
      • Using -f to check directories
      • Confusing -e (exists) with directory check
      • Missing spaces inside [ ] causing syntax errors
      3. What will be the output of this script if myfile.txt exists and is readable but not writable?
      if [ -r myfile.txt ]; then echo "Readable"; else echo "Not readable"; fi
      if [ -w myfile.txt ]; then echo "Writable"; else echo "Not writable"; fi
      medium
      A. Readable\nWritable
      B. Not readable\nWritable
      C. Readable\nNot writable
      D. Not readable\nNot writable

      Solution

      1. Step 1: Check readability condition

        The file exists and is readable, so [ -r myfile.txt ] is true, printing "Readable".
      2. Step 2: Check writability condition

        The file is not writable, so [ -w myfile.txt ] is false, printing "Not writable".
      3. Final Answer:

        Readable\nNot writable -> Option C
      4. Quick Check:

        Readable true, writable false = A [OK]
      Hint: Check each permission separately with -r and -w [OK]
      Common Mistakes:
      • Assuming writable if readable
      • Mixing up -r and -w operators
      • Ignoring else branch output
      4. Identify the error in this bash snippet that checks if a file exists and is executable:
      if [ -e myscript.sh -a -x ]; then echo "Executable file"; fi
      medium
      A. Missing filename after -x operator
      B. Wrong operator -e should be -f
      C. Missing spaces around -a operator
      D. Should use double brackets [[ ]] instead of single [ ]

      Solution

      1. Step 1: Analyze the -x operator usage

        The -x operator requires a filename argument, but none is provided after it.
      2. Step 2: Check other parts of the condition

        -e myscript.sh is valid to check existence; spaces around -a are correct; using single brackets is valid.
      3. Final Answer:

        Missing filename after -x operator -> Option A
      4. Quick Check:

        -x needs a file name [OK]
      Hint: Always provide filename after each test operator [OK]
      Common Mistakes:
      • Forgetting filename after -x
      • Confusing -e and -f operators
      • Missing spaces around operators causing syntax errors
      5. You want to write a bash script that prints "Ready" only if config.cfg exists, is a regular file, and is readable and writable. Which condition correctly checks all these?
      hard
      A. if [ -f config.cfg ] && [ -r config.cfg ] && [ -w config.cfg ]; then echo "Ready"; fi
      B. if [ -e config.cfg -a -r config.cfg -a -w config.cfg ]; then echo "Ready"; fi
      C. if [ -d config.cfg ] && [ -r config.cfg ] && [ -w config.cfg ]; then echo "Ready"; fi
      D. if [ -e config.cfg ] && [ -r config.cfg ] && [ -w config.cfg ]; then echo "Ready"; fi

      Solution

      1. Step 1: Identify the operator for regular file check

        -f checks if the path is a regular file, which is required.
      2. Step 2: Combine all conditions correctly

        Using && between separate [ ] tests is correct and clear. The script checks existence as a file, readability, and writability.
      3. Step 3: Eliminate incorrect options

        if [ -e config.cfg ] && [ -r config.cfg ] && [ -w config.cfg ]; then echo "Ready"; fi uses -e which allows directories; if [ -e config.cfg -a -r config.cfg -a -w config.cfg ]; then echo "Ready"; fi uses -e which allows directories; if [ -d config.cfg ] && [ -r config.cfg ] && [ -w config.cfg ]; then echo "Ready"; fi checks for directory which is wrong.
      4. Final Answer:

        if [ -f config.cfg ] && [ -r config.cfg ] && [ -w config.cfg ]; then echo "Ready"; fi -> Option A
      5. Quick Check:

        Regular file with read/write uses -f, -r, -w combined [OK]
      Hint: Use -f for file, combine tests with && for clarity [OK]
      Common Mistakes:
      • Using -e instead of -f to check file type
      • Using -a inside single [ ] causing confusion
      • Checking directory instead of file
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard