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❌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文件里,每次开机都会执行。这不是本题目的重点可以不做。
2.软连接/硬连接
问题
1)新建文件A,内容为“I am a student”
2)为A建立软连接A1、硬连接A2
3)查看文件A、A1、A2的内容及属性
4)删除文件A,再次查看文件A1、A2的内容
5)尝试为目录 /boot 建立硬连接
6)尝试为 /etc/fstab 文件跨分区建立硬连接
方案
软连接在制作的时候需要加上“-s”选项,硬连接制作不需要加任何选项。需注意在制作连接时,都要用绝对路径。
步骤
实现此案例需要按照如下步骤进行。
步骤一:新建文件A,内容为“I am a student”
命令操作如下所示:
[root@localhost /]# cd /opt/
[root@localhost opt]# echo “I am a student” > /opt/A
[root@localhost opt]# cat /opt/A
I am a student
[root@localhost opt]#
步骤二:为A建立软连接A1、硬连接A2
命令操作如下所示:
[root@localhost opt]# ls
A
[root@localhost opt]# ln -s /opt/A /opt/A1 //建立软连接A1
[root@localhost opt]# ln /opt/A /opt/A2 //建立硬链接A2
[root@localhost opt]# ls
A A1 A2
[root@localhost opt]#
步骤三:查看文件A、A1、A2的内容及属性
命令操作如下所示:
[root@localhost opt]# ls -l /opt/
总用量 8
-rw-r–r--. 2 root root 15 1月 13 21:15 A
lrwxrwxrwx. 1 root root 6 1月 13 21:16 A1 -> /opt/A
-rw-r–r--. 2 root root 15 1月 13 21:15 A2
[root@localhost opt]# ls -i
398407 A 398627 A1 398407 A2
[root@localhost opt]#
步骤四:删除文件A,再次查看文件A1、A2的内容
命令操作如下所示:
[root@localhost opt]# ls
A A1 A2
[root@localhost opt]# cat /opt/A1 //源文件完好时软连接可以使用
I am a student
[root@localhost opt]# cat /opt/A2 //源文件完好时硬连接可以使用
I am a student
[root@localhost opt]# rm -rf /opt/A //删除源文件
[root@localhost opt]# cat /opt/A1 //源文件删除后,软连接不能使用
cat: /opt/A1: 没有那个文件或目录
[root@localhost opt]# cat /opt/A2 //源文件删除后,硬连接能使用
I am a student
[root@localhost opt]#
步骤五:尝试为目录 /boot 建立硬连接
命令操作如下所示:
[root@localhost opt]# ln /boot/ /opt/A3
ln: “/boot/”: 不允许将硬链接指向目录
[root@localhost opt]#
步骤六:尝试为 /etc/fstab 文件跨分区建立硬连接
命令操作如下所示:
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 99G 3.4G 91G 4% /
tmpfs 242M 0 242M 0% /dev/shm
/dev/sda1 194M 34M 150M 19% /boot
/dev/sda3 99G 188M 94G 1% /data
[root@localhost opt]# ln /etc/fstab /boot/A3
ln: 创建硬链接"/boot/A3" => “/etc/fstab”: 无效的跨设备连接
[root@localhost opt]#
3.自定义Yum仓库
问题
1)准备软件包目录
2)新建文件夹 /custom
3)拷入 linuxqq、realplayer 两个 RPM 包
4)为软件包目录生成 repodata/ 数据
5)从 RHEL 6 光盘安装 createrepo
6)执行 createrepo /custom
7)测试上述 YUM 源
方案
本题的思路:
1)先搭建好yum仓库,安装createrepo软件包
2)创建目录“/custom”
3)将事先准备好的rpm包,复制到目录“/custom”目录里
4)执行 createrepo /custom
5)编写新的yum客户端配置文件,添加新的yum源
步骤
实现此案例需要按照如下步骤进行。
步骤一:准备软件包目录
新建文件夹 /custom,命令操作如下所示:
[root@localhost /]# mkdir /custom
[root@localhost /]# ls -ld /custom/
drwxr-xr-x. 2 root root 4096 1月 13 21:27 /custom/
[root@localhost /]# ls /root/桌面/
httpd-2.2.25.tar.gz linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm
[root@localhost /]#
拷入 linuxqq、realplayer 两个 RPM 包
[root@localhost /]# cp /root/桌面/linuxqq-v1.0.2-beta1.i386.rpm /custom/
[root@localhost /]# cp /root/桌面/RealPlayer11GOLD.rpm /custom/
[root@localhost /]# ls /custom/
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm
[root@localhost /]#
步骤二:为软件包目录生成 repodata/ 数据
从 RHEL 6光盘安装 createrepo。(因cretaerepo包依赖关系复杂首先要搭建yum)
命令操作如下所示:
[root@localhost /]# umount /dev/cdrom
[root@localhost /]# mount /dev/cdrom /media/ //挂载光盘设备到/media
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost /]# mount | tail -1
/dev/sr0 on /media type iso9660 (ro)
[root@localhost /]# vim /etc/yum.repos.d/rhel6.repo //配置客户端文件
[rhel-6]
name=Red Hat Enterprise Linux 6
baseurl=file:///media/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@localhost /]# yum repolist //客户端测试yum
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name status
rhel-6 Red Hat Enterprise Linux 6 3,690
repolist: 3,690
[root@localhost /]# yum -y install createrepo //利用yum安装createrepo
执行 createrepo /custom
[root@localhost /]# ls /custom/
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm
[root@localhost /]# createrepo /custom/
Spawning worker 0 with 2 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost /]# ls /custom/
linuxqq-v1.0.2-beta1.i386.rpm RealPlayer11GOLD.rpm repodata
[root@localhost /]#
步骤三:测试上述 YUM 源
编写客户端配置文件,命令操作如下所示:
[root@localhost /]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
rhel6.repo rhel-source.repo
[root@localhost yum.repos.d]# cp rhel6.repo myrpm.repo
[root@localhost yum.repos.d]# vim myrpm.repo
[rhel-myrpm]
name=Red Hat Enterprise Linux myrpm
baseurl=file:///custom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
测试yum源
[root@localhost /]# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel-myrpm | 2.9 kB 00:00 …
rhel-myrpm/primary_db | 3.4 kB 00:00 …
repo id repo name status
rhel-6 Red Hat Enterprise Linux 6 3,690
rhel-myrpm Red Hat Enterprise Linux myrpm 2
repolist: 3,692
[root@localhost /]
4.Shell基础应用
问题
1)查看IP地址、检查最近执行过的10条命令
2)执行最近一次以 ifc 开头的命令
3)为用户mike重置密码,屏蔽所有输出
4)执行 mkdir /a /b/c ,将报错存到 err.txt
方案
查看历史命令的命令是history命令。此命令会把最近执行的1000条以内的命令显示出来。
想看最近执行的10条命令,可以利用“|”交给tail命令提取最后10条。还可以利用“|” 交给grep命令来筛选特定历史命令。
命令的输出信息会比较多,我们可以利用“&>” 重定向到/dev/null。来屏蔽所有输出。
收集错误信息为“2>”。
步骤
实现此案例需要按照如下步骤进行。
步骤一:查看IP地址、检查最近执行过的10条命令
命令操作如下所示:
[root@localhost /]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:17:BF:F7
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe17:bff7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20291 errors:0 dropped:0 overruns:0 frame:0
TX packets:5188 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16183740 (15.4 MiB) TX bytes:482909 (471.5 KiB)
……
[root@localhost /]# history | tail -10
539 cd /etc/yum.repos.d/
540 ls
541 cp rhel6.repo myrpm.repo
542 vim myrpm.repo
543 cd /
544 yum repolist
545 ifconfig
546 history | tail -10
547 ifconfig
548 history | tail -10
[root@localhost /]#
步骤二:执行最近一次以 ifc 开头的命令
命令操作如下所示:
[root@localhost /]# !ifc
ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:17:BF:F7
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe17:bff7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20315 errors:0 dropped:0 overruns:0 frame:0
TX packets:5203 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16185686 (15.4 MiB) TX bytes:485795 (474.4 KiB)
……
步骤三:为用户mike重置密码,屏蔽所有输出
命令操作如下所示:
[root@localhost /]# useradd mike
[root@localhost /]# echo 123456 | passwd --stdin mike
更改用户 mike 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost /]# echo 123456 | passwd --stdin mike &> /dev/null
[root@localhost /]#
步骤四:利用mkdir同时建立“/a”与 “/b/c” ,将报错存到 err.txt
命令操作如下所示:
[root@localhost /]# mkdir /a /b/c 2> err.txt
[root@localhost /]# ls -ld /a
drwxr-xr-x. 2 root root 4096 1月 13 22:00 /a
[root@localhost /]# ls -ld /b
ls: 无法访问/b: 没有那个文件或目录
[root@localhost /]# cat err.txt
mkdir: 无法创建目录"/b/c": 没有那个文件或目录
[root@localhost /]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值