Triple Entendre (triple_entendre) wrote,
Triple Entendre
triple_entendre

  • Mood:

bashfiletests.sh

#!/bin/bash

file=$1
file2=$2

echo "tests for $file:"
if [ -a $file ]; then echo "-a: file exists."; fi
if [ -b $file ]; then echo "-b: file exists and is a block special file."; fi
if [ -c $file ]; then echo "-c: file exists and is a character special file."; fi
if [ -d $file ]; then echo "-d: file exists and is a directory."; fi
if [ -e $file ]; then echo "-e: file exists."; fi
if [ -f $file ]; then echo "-f: file exists and is a regular file."; fi
if [ -g $file ]; then echo "-g: file exists and is set-group-id."; fi
if [ -h $file ]; then echo "-h: file exists and is a symbolic link."; fi
if [ -k $file ]; then echo "-k: file exists and its sticky bit is set."; fi
if [ -p $file ]; then echo "-p: file exists and is a named pipe (FIFO)."; fi
if [ -r $file ]; then echo "-r: file exists and is readable."; fi
if [ -s $file ]; then echo "-s: file exists and has a size greater than zero."; fi
if [ -t $file ]; then echo "-t: file descriptor is open and refers to a terminal."; fi
if [ -u $file ]; then echo "-u: file exists and its set-user-id bit is set."; fi
if [ -w $file ]; then echo "-w: file exists and is writable."; fi
if [ -x $file ]; then echo "-x: file exists and is executable."; fi
if [ -O $file ]; then echo "-O: file exists and is owned by the effective user id."; fi
if [ -G $file ]; then echo "-G: file exists and is owned by the effective group id."; fi
if [ -L $file ]; then echo "-L: file exists and is a symbolic link."; fi
if [ -S $file ]; then echo "-S: file exists and is a socket."; fi
if [ -N $file ]; then echo "-N: file exists and has been modified since it was last read."; fi

if [ "$file2" == "" ]; then exit; fi

if [ $file -nt $file2 ]; then
  echo "-nt: file1 is newer (according to modification date) than file2, or file1 exists and file2 does not."
fi
if [ $file -ot $file2 ]; then
  echo "-ot: file1 is older than file2, or if file2 exists and file1 does not."
fi
if [ $file -ef $file2 ]; then
  echo "-ef: file1 and file2 refer to the same device and inode numbers."
fi


yeah, I'm sure there's a better way to do this. But it amused me to copy/paste a chunk of the bash manpage and make it into a script.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments