《linux系统命令及shell脚本》阅读笔记 4

《linux系统命令及shell脚本》阅读笔记 4
ls -al
ls-al格式化地输出了文件的详细信息,每个文件都有7列输出,下面详细介绍每列的含义。
第一列是文件类别和权限,这列由10个字符组成,第一个字符表明该文件的类型。表3-2列出了第一个字符可能的值和所代表的含义。接下来的属性中,每3个字符为一组,第2~4个字符代表该文件所有者(user)的权限,第5~7个字符代表给文件所有组(group)的权限,第8~10个字符代表其他用户(others)拥有的权限。
每组是rwx的组合,如果拥有读权限,则该组的第一个字符显示r,否则显示一个小横线;如果拥有写权限,则该组的第二个字符显示w,否则显示一个小横线;如果拥有执行权限,则第三个字符显示x,否则显示一个小横线。
第二列代表“连接数”,除了目录文件之外,其他所有文件的连接数都是1,目录文件的连接数是该目录中包含其他目录的总个数+2,也就是说,如果目录A中包含目录B和C,则目录A的连接数为4。
第三列代表该文件的所有人,第四列代表该文件的所有组,第五列是该文件的大小,第六列是该文件的创建时间或最近的修改时间,第七列文件名
这里写图片描述
chmod
如果需要修改的不是一个文件而是一个目录,以及该目录下所有的文件、子目录、子目录下所有的文件和目录(即递归设置该目录下所有的文件和目录的权限),则需要使用-R参数,也就是chmod-R 754 somedir。

查看文件类型file
这里写图片描述
查找文件 find
这里写图片描述
数据库查找 locate
与find不同,locate命令依赖于一个数据库文件,Linux系统默认每天会检索一下系统中的所有文件,然后将检索到的文件记录到数据库中。在运行locate命令的时候可直接到数据库中查找记录并打印到屏幕上,所以使用locate命令要比find命令反馈更迅速。在执行这个命令之前一般需要执行updatedb命令(这不是必须的,因为系统每天会自动检索并更新数据库信息,但是有时候会因为文件发生了变化而系统还没有再次更新而无法找到实际上确实存在的文件。所以有时需要主动运行该命令,以创建最新的文件列表数据库),以及时更新数据库记录。下面是使用locate命令来查找httpd.conf文件:

[root@localhost ~]# updatedb
[root@localhost ~]# locate httpd.conf
/etc/httpd/conf/httpd.conf

创建一个文件
[root@localhost ~]# touch test_locate

用find命令查找

[root@localhost ~]# find /-name test_locate
/root/test_locate #找到了

再用locate找一下

[root@localhost ~]# locate test_locate
[root@localhost ~]# #没找到!为什么?

执行一下updatedb,更新数据库

[root@localhost ~]# updatedb
[root@localhost ~]# locate test_locate
/root/test_locate #找到了!说明由于没有更新数据库,所以无法使用locate命令找到刚创建的文件

将该文件删除

[root@localhost ~]# rm test_locate
rm: remove regular empty file ‘test_locate’? y #确认删除了

再次locate,但仍然可以找到

[root@localhost ~]# locate test_locate
/root/test_locate

用updatedb再次更新一下

[root@localhost ~]# updatedb
[root@localhost ~]# locate test_locate
[root@localhost ~]# #再找,没有这个文件

-b, –basename match only the base name of path names
-c, –count 只输出找到的数量
-d, –database DBPATH 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, –existing only print entries for currently existing files
-L, –follow follow trailing symbolic links when checking file existence (default)
-h, –help 显示帮助
-i, –ignore-case 忽略大小写
-l, –limit, -n LIMIT limit output (or counting) to LIMIT entries
-m, –mmap ignored, for backward compatibility
-P, –nofollow, -H don’t follow trailing symbolic links when checking file existence
-0, –null separate entries with NUL on output
-S, –statistics don’t search for entries, print statistics about eachused database
-q, –quiet 安静模式,不会显示任何错误讯息
-r, –regexp REGEXP 使用基本正则表达式
–regex 使用扩展正则表达式
-s, –stdio ignored, for backward compatibility
-V, –version 显示版本信息
-w, –wholename match whole path name (default)
locate(locate) 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。整个locate工作其实是由四部分组成的:
1. /usr/bin/updatedb 主要用来更新数据库,通过crontab自动完成的
2. /usr/bin/locate 查询文件位置
3. /etc/updatedb.conf updatedb的配置文件
4. /var/lib/mlocate/mlocate.db 存放文件信息的文件

查找执行文件 which/whereis
which用于从系统的PATH变量所定义的目录中查找可执行文件的绝对路径。比如说想查找passwd这个命令在系统中的绝对路径,使用方法如下:

[root@localhost ~]# which passwd
/usr/bin/passwd
使用whereis也能查到其路径,但是和which不同的是,它不但能找出其二进制文件,还能找出相关的man文件:

[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz
/usr/share/man/man1/passwd.1.gz

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值