Linux-Shell脚本编程-学习-6-Shell编程-使用结构化命令-文件比较-case编程

简介: 这一片主要说test文件的比较,文件比较在日常使用的频率比较高,这里重点把每个部分都试着说说看

. 检车目录 -d



-d测试会检查指定的文件名是否在系统上以目录的形式存在,当我们要写文件到某个目录之前,或者是将文件放置到某个目录位置的时候,就需要使用-d来检测这个目录是否存在



#!/bin/bash



#look before you leap



if [ -d $HOME ]

   then

   echo " your Home directory exists"

   cd $HOME

   ls -a

else

   echo " there is a problem with your HOME directory"

fi

image.png


运行截图,代码的意思就是要检测HOME这个目录是否存在,如果这个目录存在就切换到这个目录,并且执行 ls -a命令,输出HOme目录下的所有文件




2. 检查对象是否存在 -e



-e比较允许你在脚本中使用对象前检查文件或者目录是否寻再



#!/bin/bash


#chesking if a directory exists


if [ -e $HOME ]

   then

   echo "ok,on the directory.now to check the file"

       if [ -e $HOME/testing ]

           then

               echo "addending date to existing file"

               date >> $HOME/testing

       else

           echo "create a file"

           date > $HOME/testing

       fi

else

   echo "sorry you do not have a Home directory"

fi

这段代码的意思就是先要检测HOME文件是否存在,如果存在,那么就检测testing文件是否存在,如果存在就吧date的数据追加写到testing文件中,如果testing文件补充存在就创建testing文件,并把date数据写入到文件中

 

image.png


3. 检查文件 -f



确定指定的对象是个文件 -f,区分一个文件名是目录还是文件,需要使用 -f



#!/bin/bash


#cheak if a file


if [ -e $HOME ]

   then

       echo "the object exists,is it a file?"

       if [ -f $HOME ]

           then

               echo " yes it is a file"

           else

               echo " no if is not a file"

               if [ -f $HOME/.bash_history ]

                   then

                       echo " but this is a file"

               else

                   echo "this is not a file too"

               fi

       fi

else

   echo "sorry the object dose not exists"

fi


exit 0

image.png

这段代码的意思就是首先检查HOME目录是否存在,如果存在,则判断home是不是一个文件,如果是就是输出这是一个文件,如果不是,就输出这不是一个文件,并且判断home下的bash_history是不是一个文件,如果是就输出是,如果不是就输出不是,最后如果HOME文件不存在,这直接执行最后一段代码,输出这个对象不存在。



4. 检查文件是否可读 -r




当我在尝试从文件中读取数据是,最好先判断一下该文件是否可读。



#!/bin/bash


#testing if you can read a file


pwfile=/etc/shadow


if [ -f $pwfile ];then

   if [ -r $pwfile ];then

       tail $pwfile

   else

       echo " sorry o am unable to read the $pwfile"

   fi

else

   echo " sorry $pwfile is not a file "

fi

/etc/shadow文件还有系统用户加密后的密码,所以他对系统上的普通用户是不可读的


image.png


5.检查空文件-s




当我们要删除一个文件的时候,有时候需要查看这个文件是否是一个空文件,不过这里要注意的是,-s检测到文件是控空文件的时候返回的退出码是1





#!/bin/bash


#testing if a file is empty


file=testfile

touch $file


if [ -s $file ];then

   echo "the $file file exists and has date in"

else

   echo "the $file exists and is empty"

fi

date > $file

if [ -s $file ];then

   echo "the $file file exists and has date in"

else

   echo "the $file exists and is empty"

fi

image.png


6. 检查文件是否可写 -w

判断是是否对该文件有写权限

#!/bin/bash


#check if a file is writeable


logfile=$HOME/logtest

touch $logfile


chmod u-w $logfile


new=`date +%y%m%d-%H%M`


if [ -w $logfile ];then

   echo "the program ran at : $logfile" > $logfile

   echo "the first attempt succeeded"

else

   echo "the first attempt failes"

fi

chmod u+w $logfile


if [ -w $logfile ];then

   echo "the program ran at : $logfile" > $logfile

   echo "the second attempt succeeded"

else

   echo "the second attempt failes"

fi





image.png


7.检查文件是否可执行 -x



-x比较是一个渐变的判断一个特定文件是否有可执行的权限的方法。



#!/bin/bash


#testing file execution


if [ -x shelltest2.sh ];then

   echo " you can run the script:"

   ./shelltest2.sh

else

   echo " you are unable to execute the script"

fi

image.png


8. 检查文件所属关系 -O



-O比较允许你轻松的测试你是否是文件属主



#!/bin/bash


#check file ownership


if [ -O /etc/passwd ];then

   echo " yao are the file owner"

else

   echo " you are not file owner"

fi

image.png


9. 检查默认属组关系




#!/bin/bash


#check file group test


if [ -G $HOME/shellcode/testfile ];then

   echo " yao are in the same grouup"

else

   echo " the file is not owned by tour group"

fi



10. 检查文件日期





#!/bin/bash


#test file dates


if [ $HOME/shellcode/testfile -nt $HOME/shellcode/testfile1 ];then

   echo " testfile new than testfile1"

else

   echo " testfile1 new than testfile"

fi





到这里,文件的test就基本介绍完了,后面的讲继续介绍



还有一部分这里就不做详细解释,大家可以自行百度学习一下



1. 复合条件测试



【】&&【】


【】||【】


2. if-then高级特性




((expression))


【【expression】】



3. case命令




case variable in

pattern1 | pattern2) commands1;;

pattern3)commands2;;

*) default commands;;


目录
相关文章
|
1月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
38 0
Linux 如何更改默认 Shell
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
80 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
37 0
|
Shell Linux
Linux Shell 中 case 语句
Linux Shell 中 case 语句
132 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
110 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
400 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
90 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
80 2
|
21天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
50 14
Linux 10 个“who”命令示例