Linux shell 文件测试

一、检查目录
-d检查是否存在且是目录。

#!/bin/bash

jump_directory=/home/arthur

if [ -d $jump_directory ]; then
    echo "The $jump_directory directory exists."
    cd $jump_directory
else
    echo "The $jump_directory directory does not exists."
fi

sudo mkdir /home/arthur

二、检查对象是否存在
-e检查对象是否存在。

#!/bin/bash


location=$HOME
file_name="sentinel"

if [ -e $location ]; then
    echo "The $location exists"
    echo "Now checking on the file,$file_name"

    if [ -e $HOME/$file_name ]; then
        echo "OK,on the filename."
        echo "Updating Current Date."
        date >> $location/$file_name
    else
        echo "File $location/$file_name does not exists."
        echo "Nothing to update."
    fi
else
    echo "The $location directory does not exists."
    echo "Nothing to update."
fi

touch $HOME/sentinel

三、检查是否是文件
-f测试是否是文件

 #!/bin/bash


item_name=$HOME

echo
echo "The item being checked:$iem_name"
echo 

if [ -e $item_name ]; then
    echo "The item,$item_name.does exists"
    echo "But is it a file?"
    if [ -f $item_name ]; then
        echo "Yes,$item_name is a file"
    else
        echo "No,$item_name,is not a file"
    fi
else 
    echo "The item,$item_name,does not exists"
    echo "Nothing to update"
fi

修改:

item_name=$HOME/sentinel

四、测试文件否是可读
-r测试文件是否可读

#!/bin/bash

file_item=/etc/shadow

if [ -f $file_item ]; then
  if [ -r $file_item ]; then
        echo "$file_item is readable"
        tail $file_item
  else 
        echo "$file_item is not readable"
  fi
else 
  echo "$file_item is not a file"
fi

五、检查空文件
-s检查文件是否为空

#!/bin/bash


item_name=$HOME/sentinel 

if [ -f $item_name ]; then
    if [ -s $item_name ]; then
        echo "$item_name exist and it is a file,and has data in"
    else
        echo "No,$item_name is empty"
        rm $item_name
    fi
else 
    echo "The item,$item_name,does not exists or is not a file"
    echo "Nothing to update"
fi

六、文件是否可写
-w判断文件是否可写

#!/bin/bash


item_name=$HOME/sentinel


if [ -f $item_name ]; then
    if [ -w $item_name ]; then
        echo "$item_name is a file and is a writeable"
        date +%H%M > $item_name
    else
        echo "$item_name is  a not writeable  file"
    fi
else 
    echo "$item_name does not exists or it is not a file"
    echo "Nothing to update"
fi

七、判断文件是否可执行
-x判断文件是否可执行

#!/bin/bash


file_name=$HOME/sh/test16.sh

if [ -f $file_name ]; then
  if [ -x $file_name ]; then
    echo "$file_name is a file and can executable"
    $file_name
  else
    echo "$file_name can not executable"
   fi
else
  echo "$file_name does not exist or is not a file"
fi

八、测试文件属主和默认组
-O测试是否是文件属主。-G测试是不是文件默认组。-G比较只会检查默认组而非用户所属的所有组。

#!/bin/bash

file_name=$HOME/sentinel

if [ -f $file_name ]; then
    if [ -O $file_name ]; then
        echo "The $file_name owner youself."
    else 
        echo "The $file_name does not owner you."
    fi

    if [ -G $file_name ]; then
        echo "You are in the same group as the file"
    else
        echo  "The file is not owned by your group"
    fi
else
    echo "$file_name is not a file"
fi

九、检查文件日期
-nt比较会判定一个文件是否比另一个文件新。-ot比较会判定一个文件是否比另一个文件旧。

#!/bin/bash

test18=$HOME/sh/test18.sh
test19=$HOME/sh/test19.sh

if [ -e $test18  ] && [ -e $test19  ]; then
  if [ $test18 -nt $test19 ]; then
    echo "$test18 is newer than $test19"
  else
    echo "$test19 is newer than $test18"
  fi

  if [ $test18 -ot $test19 ]; then
    echo "$test18 is older than $test19"
  else 
    echo "$test19 is older than $test18"
  fi
else
  echo "$test18,$test19, one of that does not exist"
fi

posted @ 2022-09-11 14:57  shigp1  阅读(399)  评论(0编辑  收藏  举报