find命令和path变量详解

1.find、PATH

问题

1)熟悉find选项:iname、uid、gid、user、group、nouser、nogroup、maxdepth、inum
2)制作几个简单的脚本文件,实现在所有路径都能执行
3)每天在/opt下创建一个目录命名为mydir-YYYYmmdd

方案

PATH变量的作用:将可执行程序拷贝到PATH变量的任意路径下,即可达到在任意路径下执行。
当我们想得到命令的结果时可以,利用“$()”,例如:

[root@svr5 ~]# echo hostname      #输出只是hostname本身
hostname
[root@svr5 ~]# echo $(hostname)   #输出hostname命令执行的结果
svr5.tarena.com
[root@svr5 ~]#

步骤

实现此案例需要按照如下步骤进行。
步骤一:熟悉find选项
-iname选项:根据名称查找,忽略大小写。
命令操作如下所示:

[root@localhost ~]# find /etc/ -name PASSWD
[root@localhost ~]# find /etc/ -iname PASSWD
/etc/pam.d/passwd
/etc/passwd

-uid选项:根据uid查找,属于这个用户的文件。
命令操作如下所示:

[root@localhost ~]# useradd -u 500 student
[root@localhost ~]# tail -1 /etc/passwd
student:x:500:500::/home/student:/bin/bash
[root@localhost ~]# find /home/ -uid 500
/home/student
/home/student/.bash_logout
/home/student/.gnome2
/home/student/.bashrc
/home/student/.bash_profile
/home/student/.mozilla
/home/student/.mozilla/plugins
/home/student/.mozilla/extensions
[root@localhost ~]#

-gid 选项:根据gid查找,属于这个组的文件。
命令操作如下所示:

[root@localhost ~]# find /home/ -gid 500
/home/student
/home/student/.bash_logout
/home/student/.gnome2
/home/student/.bashrc
/home/student/.bash_profile
/home/student/.mozilla
/home/student/.mozilla/plugins
/home/student/.mozilla/extensions
[root@localhost ~]#

-user 选项:根据用户名查找,查找属于这个用户的。
命令操作如下所示:

[root@localhost ~]# find /home/ -user student
/home/student
/home/student/.bash_logout
/home/student/.gnome2
/home/student/.bashrc
/home/student/.bash_profile
/home/student/.mozilla
/home/student/.mozilla/plugins
/home/student/.mozilla/extensions
[root@localhost ~]#

-group 选项:根据组名查找,查找属于这个组的。
命令操作如下所示:

[root@localhost ~]# find /home/ -group student
/home/student
/home/student/.bash_logout
/home/student/.gnome2
/home/student/.bashrc
/home/student/.bash_profile
/home/student/.mozilla
/home/student/.mozilla/plugins
/home/student/.mozilla/extensions
[root@localhost ~]#

-nouser 选项:查找这个文件不属于任何用户的。
命令操作如下所示:

[root@localhost ~]# userdel student
[root@localhost ~]# find /home/ -nouser
/home/student
/home/student/.bash_logout
/home/student/.gnome2
/home/student/.bashrc
/home/student/.bash_profile
/home/student/.mozilla
/home/student/.mozilla/plugins
/home/student/.mozilla/extensions
[root@localhost ~]#

-nogroup 选项:查找这个文件不属于任何组的。
命令操作如下所示:

[root@localhost ~]# find /home/ -nogroup
/home/student
/home/student/.bash_logout
/home/student/.gnome2
/home/student/.bashrc
/home/student/.bash_profile
/home/student/.mozilla
/home/student/.mozilla/plugins
/home/student/.mozilla/extensions
[root@localhost ~]#

-maxdepth 选项:限制目录查找的深度(最大层数),注意:当有多个条件是-maxdepth这个选项要放到最前面。
命令操作如下所示:

[root@localhost ~]# find /etc/  -maxdepth 1 -name passwd
/etc/passwd
[root@localhost ~]# find /etc/  -maxdepth 2 -name passwd
/etc/passwd
/etc/pam.d/passwd
[root@localhost ~]#

-inum 选项:根据文件i节点编号查找,i节点:在Linux系统中唯一标识一个文件的标志,它是一串数字。在linux系统中,一切皆为文件,那么一分区能够创建多少个文件数是有限的,它与这个分区的i节点的数量有关。i节点的数量大小也与该分区的大小有关。
命令操作如下所示:

[root@localhost ~]# tune2fs -l /dev/sda1 | grep "Inode count" //查看分区i节点总数
Inode count:              51200
[root@localhost ~]# ls –i             //查看当前目录下的文件目录的i节点
2621449 anaconda-ks.cfg  2621442 install.log         2621613 rv.txt    2621463 模板  2621462 下载
2621618 bootetc          2621443 install.log.syslog  2623720 usrsbin   2621468 视频  2621466 音乐
2621616 inittab          2621615 ipadd.txt           2621598 zhangsan  2621467 图片  2621461 桌面
2621617 init.txt         2621614 ip.txt              2621464 公共的    2621465 文档
[root@localhost ~]# find /root -inum 2621442
/root/install.log
[root@localhost ~]#

步骤二:制作几个简单的脚本文件,实现在所有路径都能执行
命令操作如下所示:

[root@localhost opt]# echo "echo Hell Word" > /opt/hell.sh //制作脚本hell.sh
[root@localhost opt]# cat /opt/hell.sh        //此脚本运行,就是在屏幕输出一句话
echo Hell Word
[root@localhost opt]# /opt/hell.sh            //以绝对路径执行,但缺没有执行权限
-bash: /opt/hell.sh: 权限不够
[root@localhost opt]# chmod +x /opt/hell.sh  //添加执行权限x,此命令明日就会学习
[root@localhost opt]# /opt/hell.sh            //再次以绝对路径执行
Hell Word
[root@localhost opt]# hell.sh                 //测试任意路径下执行,显然不行
-bash: hell.sh: command not found
[root@localhost opt]# echo $PATH              //查看PATH变量的值
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost opt]# cp /opt/hell.sh /bin   //将脚本拷贝到PATH变量任意路径下
[root@localhost opt]# hell.sh                 //测试任意路径下执行
Hell Word
[root@localhost opt]# 

步骤三:每天在/opt下创建一个目录命名为mydir-YYYYmmdd
此题主要目的考察怎样提取系统时间命名,这样每天创建才不会重复。
命令操作如下所示:

[root@localhost ~]# echo date              //echo命令直接写date,输出的为date
date 
[root@localhost ~]# echo $(date)           //要想要输出命令的结果需加上,$()
2015年 01月 15日 星期四 16:09:53 CST
[root@localhost ~]# echo $(date +%Y%m%d)  //$(date +%Y%m%d)执行时才是我们想要的结果
20150115
[root@localhost ~]# ls /opt
nsd.txt  rh  tarena01
[root@localhost ~]# mkdir /opt/mydir-$(date +%Y%m%d)
[root@localhost ~]# ls /opt
mydir-20150115  nsd.txt  rh  tarena01

想要每天都创建可以把“mkdir /opt/mydir-$(date +%Y%m%d)”这条命令写到,
~/.bash_profile文件里,每次开机都会执行。这不是本题目的重点可以不做。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值