find、PATH
问题
- 熟悉find选项:iname、uid、gid、user、group、nouser、nogroup、maxdepth、inum
- 制作几个简单的脚本文件,实现在所有路径都能执行
- 每天在/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❌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 ( d a t e ) / / 要 想 要 输 出 命 令 的 结 果 需 加 上 , (date) //要想要输出命令的结果需加上, (date)//要想要输出命令的结果需加上,()
2015年 01月 15日 星期四 16:09:53 CST
[root@localhost ~]# echo ( d a t e + (date +%Y%m%d) // (date+(date +%Y%m%d)执行时才是我们想要的结果
20150115
[root@localhost ~]# ls /opt
nsd.txt rh tarena01
[root@localhost ~]# mkdir /opt/mydir-KaTeX parse error: Expected 'EOF', got '#' at position 34: …ot@localhost ~]#̲ ls /opt mydir-…(date +%Y%m%d)”这条命令写到,
~/.bash_profile文件里,每次开机都会执行。这不是本题目的重点可以不做。