Linux随笔2(11)


:从自己的/var/lib/数据库中搜索文件
该命令的使用形式为: [-ir],选项参数的解释如下:
由于命令实际查找的并不是文件系统的全部路径,而是去搜索一个数据库文件——/var/lib//.db,如果在执行当次搜索的时候,并未更新该数据库,那么如果搜索的结果恰好没有被记录到这个数据库中,那么即便系统上存在,也无法搜索到;此时就需要执行命令更新该数据库,然后再次执行命令搜索该数据库即可 。命令的配置文件为/etc/,关于该配置文件的详细帮助信息,可以执行命令man 5 .conf进行查看 。
该命令的使用示例如下:
test]# locate -l 5 passwdlocate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directorytest]# updatedbtest]# locate -l 5 passwd/data/backup/root_home/.vnc/passwd/data/backup/root_home/softwares/Python-3.6.8/Lib/test/keycert.passwd.pem/data/backup/root_home/softwares/Python-3.6.8/Lib/test/ssl_key.passwd.pem/data/backup/root_home/softwares/git-2.24.0/t/lib-httpd/passwd/data/repositories/base/Packages/passwd-0.79-5.el7.x86_64.rpmtest]#
上述由于是初次使用这个命令,并未初始化过该数据库,所以此时会提示无法找到.db这个文件 。此时就需要执行命令更新数据库,然后再执行命令即可 。
5. 交互式与非交互式文本内容查找
所谓的交互式文本内容查找,是通过vim编辑器对文件进行编辑;非交互式文本内容查找则是通过sed流式编辑器来完成 。
比如要删除一个文件中的空白行,以/etc/这个文件为例,将这个文件复制到/tmp目录中,分别使用这两个编辑器实现如下:
d :表示删除这个命令
另外,要在vim中,将制表符设置为4个空格,可以在vim的编辑模式下按下:set ts=4即可完成 。
通过sed流式编辑器实现
通过sed实现的命令如下所示:
test_mkdir]# sed -e '/^$/d' profile | head -n 30# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you# are doing. It's much better to create a custom.sh shell script in# /etc/profile.d/ to make custom changes to your environment, as this# will prevent the need for merging in future updates.pathmunge () {case ":${PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac}if [ -x /usr/bin/id ]; thenif [ -z "$EUID" ]; then# ksh workaroundEUID=`/usr/bin/id -u`UID=`/usr/bin/id -ru`fiUSER="`/usr/bin/id -un`"LOGNAME=$USERMAIL="/var/spool/mail/$USER"fi# Path manipulation
上述命令并没有真正将更改写入到原始文件中,而仅仅是打印到了标准输出中 。要将修改应用到原始文件中,可以增加-i选项,此时的命令为:sed -i -e '/^$/d'。
注意:慎用-i选项,因为该选项会将所有更改操作直接作用到原始文件上 。
【Linux随笔2】6.