目录
1.查找命令
查找文件一般有以下几个命令:
- which 查看可执行文件的位置
- whereis 查看可执行文件的位置及相关文件
- locate 配合数据库缓存,快速查看文件位置
- grep 过滤匹配,它是一个文件搜索工具
- find 查找相关文件
(1)which和whereis
(2)locate
locate命令和find -name 功能差不多,是它的另外一种写法,但是这个要比find搜索快的多,因为find命令查找的是具体目录文件,而locate它搜索的是一个数据库/var/lib/mlocate/mlocate.db,这个数据库中存有本地所有的文件信息;这个数据库是Linux自动创建并每天自动更新维护。相关的配置信息在/etc/updatedb.conf,查看定时任务信息在/etc/cron.daily/mlocate
示例:
可以发现刚创建的文件没有被找到,因为locate是去数据库查找,而数据库没有更新,这时需要我们手动更新,更新后就可以查找到
(3)grep
作用:过滤,它能够使用正则表达式来搜索文本,并把结果打印出来
参数:
- -v 取反
- -i 忽略大小写
- ^# 以#开头
- #$ 以#结尾
- ^$ 空行
- -n 对过滤的内容加上行号
- | 或者的意思
过滤出/etc/passwd中包含nologin或root的行
注:这里的\是转义符
下面的这种是上述的加强版,不用转义
(4)find
格式:find pathname -options [-print]
命令字 路径名称 选项 输出
参数:
pathname: find命令所查找的目录路径,不输入代表当前目录例如用 . 来表示当前目录,用 / 来表示系统根目录。
find命令选项:
- -name 按照文件名查找文件。 “名称”
- -perm 按照文件权限来查找文件。666 777 等
- -user 按照文件属主来查找文件
- -group 按照文件所属的组来查找文件
- -mtime -n / +n 按照文件的更改时间来查找文件,
- - n 表示文件更改时间距现在n天以内
- + n 表示文件更改时间距现在n天以前
- -type 查找某一类型的文件
- b - 块设备文件
- d - 目录
- c - 字符设备文件
- p - 管道文件
- l- 符号链接文件
- f - 普通文件
- -size n 查找符合指定的文件大小的文件
- -exec 对匹配的文件执行该参数所给出的其他linux命令, 相应命令的形式为' 命令 {} \;,注意{ }和 \;之间的空格,{}代表查到的内容
1)按照文件名称查找
示例1:查看当前目录下所有的TXT格式的文件
2)按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项
- mtime: 文件最后一次修改的时间
- atime: 最后一次访问时间
- ctime: 文件的最后一次变化时间,也就是修改时间
示例2:希望在root目录下查找更改时间在1天以内,被修改的文件
3)对查找内容执行相应命令
-exec 这个选项参数后面可以跟自定义的SHELL命令,格式如下:
例1:
例2:把查找到的文件移动到一个指定的目录
例3:把查找到的文件复制到一个指定的目录
xargs和find命令结合 复制文件 -i 表示 find 传递给xargs的结果 由{}来代替 (了解)
4)查找多个类型文件
比较符的使用:
- -a and 并且
- -o or 或者
- + 超过
- - 低于
5)按权限查找:-perm
查找权限等于755的文件或目录
查找至少有644权限的文件或目录 在权限数字前面加减号表示至少
把系统中权限不低于777的危险文件或目录查找出来
把系统中权限不低于777的危险文件查找出来
指定查找的目录深度:
-maxdepth 1 #只查找目录第一层的文件和目录
查找/bin目录下权限等于755的可执行的文件
查找系统中所有属于用户boboyu的文件,并把这个文件,放到/root/test目录下
同一个目录下,可以创建文件mk和文件夹mk吗?同一个目录下创建的文件名和目录名一样吗?
答:不可以
2.命令判断
用到的三个特殊符号: ; && ||
(1);分号 不考虑指令的相关性,连续执行, 分号; 不保证命令全部执行成功的
(2)&& 逻辑与====》它是只有在前面的命令执行成功后,后面的命令才会去执行
源码编译经典使用方法:
make -j 带一个参数表示项目在进行并行编译,make -j 4表示4各进程同时编译,这里加的参数取决于你的CPU的核数
(3)|| 逻辑或===》如果前面的命令执行成功,后面的命令就不去执行了;或者如果前面的执行不成功,才会去执行后面的命令
运算顺序:如果有多个命令,LINUX执行命令,是从左到右一个一个执行,从上到下执行