shell编程if及find查找作业

写一个脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息

[root@www sh.log]# cat createuser.sh 
#!/bin/bash
#author
#使用一个用户名作为参数,如果指定参数的用户存在,就显示其存在,否则添加,显示添加用户的id号等信息
read -p "username:" user
id $user &> /dev/null
if [ $? -eq 0 ];then
	echo  "$user already exist"
else
	useradd $user &> /dev/null
	echo "`id $user`"
fi
[root@www sh.log]# bash createuser.sh
username:wang
wang already exist
[root@www sh.log]# bash createuser.sh 
username:xiaodeng   
uid=1002(xiaodeng) gid=1002(xiaodeng) groups=1002(xiaodeng)

写一个脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息

[root@www sh.log]# cat yesorno.sh 
#!/bin/bash
#author:DYW
#提示用户输入yes或no,并判断用户输入的是yes还是no,或是其他信息
read -p "input yes or no please:" biu
piu=`echo "$biu" | tr "[a-z]" "[A-Z]"`
case $piu in
	Y|YES)
	echo "you select yes"
	;;
	N|NO)
	echo "you select no"
	;;
	*)
	echo "you select others"
	;;
esac

[root@www sh.log]# bash yesorno.sh 
input yes or no please:yES
you select yes
[root@www sh.log]# bash yesorno.sh 
input yes or no please:YEs
you select yes
[root@www sh.log]# bash yesorno.sh
input yes or no please:No
you select no
[root@www sh.log]# bash yesorno.sh
input yes or no please:12312
you select others

写一个脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)

[root@www sh.log]# bash filetype.sh 
input filename please:/sh.log/qiuhe.sh
The /sh.log/qiuhe.sh is ordinary file
[root@www sh.log]# cat filetype.sh 
#!/bin/bash
#suthor:DYW
#判断用户输入文件路径,显示其文件类型(普通,目录,链接,其他文件类型)
read -p "input filename please:" file
	if [ -z $file  ];then
		echo "Please enter a path"
	else 
		if [ -L $file ];then
			echo "The $file is Symbol file"
		elif [ -c $file ];then
			echo "The $file is char file"
		elif [ -d $file ];then
			echo "The $file is dir file"
		elif [ -b $file ];then
			echo "The $file is block file"
		elif [ -f $file ];then
			echo "The $file is ordinary file"
		elif [ -p $file ];then
			echo "The $file is pipe file"
		elif [ -S $file ];then
			echo "The $file is scoket file"
		else
			echo "Enter the correct file path"
		fi
	fi
[root@www sh.log]# bash filetype.sh 
input filename please:/wang/file1
The /wang/file1 is ordinary file
[root@www sh.log]# bash filetype.sh 
input filename please:/wang/jiaoben.sh
Enter the correct file path
[root@www sh.log]# bash filetype.sh 
input filename please:/wang/jiaoben1.sh
The /wang/jiaoben1.sh is ordinary file
[root@www sh.log]# bash filetype.sh 
input filename please:/usr/bin
The /usr/bin is dir file

写一个脚本/root/bin/checkint.sh,判断用户输入的参数,是否为正整数

[root@www sh.log]# cat cheskint.sh 
#!/bin/bash
#author:DYW
#判断用户输入的参数,是否为正整数
read -p "input a number please:" number
	if [ -z $number ];then
		echo "You must input a number!"
		exit
		else
			if let var=$number &>/dev/null;then
				if [ $? -eq 0 ];then
					if [ $number -lt 0 ];then
						echo "$number is Negative integer"
					elif [ $number -gt 0 ];then
						echo "$number is Positive integer"
					else
						echo "$number is 0"
					fi
				fi
			else
				echo "$number is not integer"
			fi
	fi
[root@www sh.log]# bash cheskint.sh 
input a number please:10
10 is Positive integer
[root@www sh.log]# bash cheskint.sh 
input a number please:-112  
-112 is Negative integer
[root@www sh.log]# bash cheskint.sh 
input a number please:0
0 is not integer
[root@www sh.log]# bash cheskint.sh 
input a number please:
You must input a number!
[root@www sh.log]# bash cheskint.sh 
input a number please:asdhiuadqwl
asdhiuadqwl is not integer

查找/var目录下属主为root,且属组为mail的所有文件

[root@www ~]# find /var -user root -group mail -ls
134321240    0 drwxrwxr-x   2 root     mail           46 Aug 12 18:30 /var/spool/mail

查找/var目录下不属于root、lp、gdm的所有文件

[root@www ~]# find /var/ -not \( -user root -o -user lp -o -user gdm \) -ls
134686482    0 drwx------   2 tss      tss             6 Nov 21  2015 /var/lib/tpm
443945    0 drwx------   2 postfix  root           24 Aug  9 06:23 /var/lib/postfix
   833    4 -rw-------   1 postfix  postfix        33 Aug  9 17:41 /var/lib/postfix/master.lock
134914400    0 -rw-rw----   1 wang     mail            0 Aug 11 13:02 /var/spool/mail/wang
134974157    0 -rw-rw----   1 laowang  mail            0 Aug 12 10:10 /var/spool/mail/laowang
134993654    0 -rw-rw----   1 xiaodeng mail            0 Aug 12 18:30 /var/spool/mail/xiaodeng
134924704    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/active
202230254    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/bounce
443946    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/corrupt
67719609    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/defer
134924705    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/deferred
202230255    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/flush
443947    0 drwx------   2 postfix  root            6 Jun 10  2014 /var/spool/postfix/hold
        6 Jun 10  2014 /var/spool/postfix/trace
   ...

查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

[root@www ~]# find /var/ \( -not \( -user root -o -user postfix \) -mtime -7 \) -ls
134914400    0 -rw-rw----   1 wang     mail            0 Aug 11 13:02 /var/spool/mail/wang
134974157    0 -rw-rw----   1 laowang  mail            0 Aug 12 10:10 /var/spool/mail/laowang
134993654    0 -rw-rw----   1 xiaodeng mail            0 Aug 12 18:30 /var/spool/mail/xiaodeng
134993684    0 -rw-rw----   1 gdm      mail            0 Aug 12 23:03 /var/spool/mail/gdm
[root@www ~]# stat /var/spool/mail/wang 
  File: ‘/var/spool/mail/wang’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 134914400   Links: 1
Access: (0660/-rw-rw----)  Uid: ( 1000/    wang)   Gid: (   12/    mail)
Context: unconfined_u:object_r:mail_spool_t:s0
Access: 2016-08-11 13:02:38.126781165 +0800
Modify: 2016-08-11 13:02:38.126781165 +0800
Change: 2016-08-11 13:02:38.126781165 +0800
 Birth: -

查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

[root@www ~]# find / \( -nouser -o -nogroup \) -atime -7

查找/etc目录下大于1M且类型为普通文件的所有文件

[root@www ~]# find /etc/ \( -size +1M -o -type f \) -ls
134320258    4 -rw-r--r--   1 root     root          541 Aug  9 05:48 /etc/fstab
134320259    0 -rw-------   1 root     root            0 Aug  9 05:48 /etc/crypttab
134993652    4 -rw-r--r--   1 root     root           81 Aug 12 20:25 /etc/resolv.conf
   151    4 -rw-r--r--   1 root     root         1690 Dec  9  2015 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
   152    4 -rw-r--r--   1 root     root         1004 Dec  9  2015 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
   153    4 -rw-r--r--   1 root     root         1690 Dec  9  2015 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7
67355015    4 -rw-r--r--   1 root     root         2388 Jun 29  2015 /etc/pki/tls/certs/Makefile
67355016    4 -rwxr-xr-x   1 root     root          610 Jun 29  2015 /etc/pki/tls/certs/make-dummy-cert
67355017    4 -rwxr-xr-x   1 root     root          829 Jun 29  2015 /etc/pki/tls/certs/renew-dummy-cert
134484404    8 -rwxr-xr-x   1 root     root         5178 Jun 29  2015 /etc/pki/tls/misc/CA
134484405    4 -rwxr-xr-x   1 root     root          119 Jun 29  2015 /etc/pki/tls/misc/c_hash
134484406    4 -rwxr-xr-x   1 root     root          152 Jun 29  2015 /etc/pki/tls/misc/c_info
134484407    4 -rwxr-xr-x   1 root     root          112 Jun 29  2015 /etc/pki/tls/misc/c_issuer
.....
[root@www ~]# stat /etc/hostname
  File: ‘/etc/hostname’
  Size: 22        	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 134974153   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2016-08-11 07:51:46.178807313 +0800
Modify: 2016-08-09 05:56:51.103010237 +0800
Change: 2016-08-09 05:56:51.103010237 +0800
 Birth: -

查找/etc目录下所有用户都没有写权限的文件

[root@www ~]# find /etc/ -not -perm /222 -ls 
67305775  196 -r--r--r--   1 root     root       198453 Aug  9 05:50 /etc/pki/ca-trust/extracted/java/cacerts
134417508  352 -r--r--r--   1 root     root       359773 Aug  9 05:50 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
201627950  264 -r--r--r--   1 root     root       266702 Aug  9 05:50 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
201627951  216 -r--r--r--   1 root     root       217510 Aug  9 05:50 /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
201627952  208 -r--r--r--   1 root     root       211626 Aug  9 05:50 /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
...

查找/etc目录下至少有一类用户没有执行权限的文件

[root@www ~]# find /etc/ -not -perm -111 -ls 
134751833    4 -rw-r--r--   1 root     root          936 Mar  6  2015 /etc/mke2fs.conf
134974150    4 -rw-r--r--   1 root     root           37 Aug  9 05:56 /etc/vconsole.conf
134974152    4 -rw-r--r--   1 root     root           19 Aug  9 05:56 /etc/locale.conf
134974153    4 -rw-r--r--   1 root     root           22 Aug  9 05:56 /etc/hostname
134679689    4 -rw-r--r--   1 root     root          163 Aug  9 05:49 /etc/.updated
134914398   12 -rw-r--r--   1 root     root        12288 Aug  9 06:23 /etc/aliases.db
...

查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

[root@www ~]# find /etc/init.d/ -perm -113 -ls
67830539    0 ---x--x-wx   1 root     root            0 Aug 13 02:40 /etc/init.d/file1
...

原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/36055

(1)
DYWDYW
上一篇 2016-08-16 13:59
下一篇 2016-08-16 19:51

相关推荐

  • bash脚本变量的使用

    bash脚本的变量使用详解 变量的类型包括整数、字符串和数组,但在bash脚本编程中不需要指定类型就可以直接赋值,默认均为字符型,其参与运算会自动进行隐式类型转换。 变量的赋值方式为:name='value',其中“=”两边一定不能有空格,如果变量值中包含有空格则需要使用引号引起来,需要注意的是强引用和弱引用的区分。此外变量的赋值也可以引…

    Linux干货 2016-08-15
  • linux网络管理

    在 /etc/udev/rules.d/路径下有个70-persistent-ipoib.rules文件,;里边有关于网卡信息的配置,,,在里边可以更改网卡的名字 注意:修改完之后要在/etc/sysconfig/network-scripts/ifcfg-eth0中修改,不然不能使用。 在Centos6以后有一个服务NetworkManager,他可以自动…

    Linux干货 2016-09-06
  • 迁移用户数据到独立分区

    Linux操作系统中,/home目录下为各个普通用户的家目录,主要用于存放用户的配置信息及相关文件。若安装操作系统时,采用了home目录与根目录处在同一分区的分区策略,那么随着用户数据较多,很有可能将分区空间耗尽,导致系统崩溃。所以最好是将用户数据所在目录放在一个独立的分区上,但由于/home目录下已有一些用户数据,要想将home目录建立在一个独立的分区上,…

    Linux干货 2017-08-13
  • LAMP系列之(php-fpm模式)分布三台机器部署

    LAMP系列之(php-fpm模式)分布三台机器部署 现在我们需要做一个实验,就是把apache , php-fpm , mariadb ,分别安装在3台机器上,协同工作具体如下: 192.168.42.150 apache 192.168.42.151 php-fpm 192.168.42.152 mariadb 关闭防火墙 关闭selinux 分别给这3…

    Linux干货 2017-06-03
  • 网络管理3

    一、知识整理 1、跨网络通信:路由 路由的分类:主机路由;网络路由;默认路由。 将主机接入网络,需要配置网络相关设置。一般包括如下内容:主机名;IP/MASK;路由:默认网关;DNS服务器:主、次、第三DNS服务器。 2、网络配置文件:IP、MASK、GW、DNS相关配置文件 /etc/sysconfig/network-scripts/ifcfg-IFAC…

    Linux干货 2016-09-13
  • 第六周练习

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; # cp /etc/rc.d/rc.sysinit /tmp # vim /tmp/rc.sysinit 末行模式下:%s@^[[:space:]]\+@#&am…

    Linux干货 2016-12-03