可能这个办法未必是最好的,只判断了三种情况,目录,文件,软链接;

?

脚本1:利用对选择的路径进行直接判断(唯一注意的就是针对软链接再分目录和文件的判断),echo内容是自己测试的时候输出用的;

?

#!/bin/bash
#laoyao 2020.03.10
#判断是文件还是目录还是软连接的脚本,这个是根据参数特征判断
#首先要执行h判断,这样能够区分软连接目录和常规目录;
if [ -h "$1" ] ;then #首先判断是否是软连接;
      if [ -d "$1" ];then  
      echo "$1 这是一个软连接目录" 
      elif [ -f "$1" ];then  
      echo "$1 这是一个软连接文件" 
      fi
elif [ -d "$1" ];then  
      echo "$1 这是一个常规目录"
elif [ -f "$1" ];then  
      echo "$1 这是一个常规文件"
else
      echo "其他类型文件"
fi

?

?

脚本2:利用 ls -ld 选择的路径输出结果判断,判断第一个字符(注意的也就是软链接这个地方),echo内容是自己测试的时候输出用的;

?

#!/bin/bash
#laoyao 2020.03.10
#判断是文件还是目录还是软连接的脚本,这个是根据ls输出结果判断。
#这个是通过ls -ld 参数来提取结果中内容来判断的;
var1=`ls -ld $1 |cut -c1` #截取1字符,判断是目录还是文件还是软连接,目录为d,文件为-,软连接为l;
var2=`ls -ld $1 |cut -c2-10` #截取2到10字符,输出文件的权限;
if [ "$var1" = l ] ;then #首先判断是否是软连接;
      if [ -d "$1" ];then  
      echo "$1 这是一个软连接目录 符号特征为:$var1,对应权限为:$var2,对应权限值 `stat -c "%a" $1`"
      elif [ -f "$1" ];then  
      echo "$1 这是一个软连接文件 符号特征为:$var1,对应权限为:$var2,对应权限值 `stat -c "%a" $1`"
      fi
elif [ "$var1" = d ];then  
      echo "$1 这是一个常规目录 符号特征为:$var1,对应权限为:$var2,对应权限值 `stat -c "%a" $1`"
elif [ "$var1" = - ];then  
      echo "$1 这是一个常规文件 符号特征为:$var1,对应权限为:$var2,对应权限值 `stat -c "%a" $1`"
else
      echo "其他类型文件"
fi

?