1. 链接命令
链接有硬链接和软链接之分, 硬链接可以认为是原文件的复制文件,也可以看作是同一个文件, 类似一个教室有两个门.
软链接可以认为是原文件的快捷方式,原文修改, 软链接同时修改, 原文件被删除, 软链接失效.
- 命令格式
ln -s [原文件] [目标文件]
英文原意 link-s
创建软链接,原文件一定要写绝对路径- 应用举例:
ln a.py /tmp/a_hard.py
创建a.py
的硬链接ln -s a.py /tmp/a_soft.py
创建a.py
的软链接
2. 搜索命令
2.1 文件搜索命令
locate
,find
-
locate
搜索快, 功能单一, 只能按照文件名来搜索- 命令格式:
locate 文件名
- 是在
/var/lib/mlocate
目录下搜索,所以搜索速度比较快, 更新频率为一天一更新,所以新建的文件不能马上搜索到. 可以使用updatedb
命令强制更新. - 有些明明创建了,却不能被搜索到, 是因为
/etc/updatedb.conf
的配置文件中PRUNE_BIND_MOUNTS= "yes"
这句话, 导致配置文件中的搜索规则都生效了. 当然可以改为"no"
,再试一下.
- 命令格式:
-
find
搜索慢, 耗费资源大,功能强大- 命令格式
find [搜索范围] [搜索条件]
- 是在系统当中搜索符合条件的文件名. 如果需要匹配, 使用通配符匹配, 通配符是完全匹配.
- 通配符 * 任意内容
- 通配符 ? 任意一个字符
- 通配符 [] 任意一个中括号内的字符
find /root -name "ab[cd]"
可以找出abc
和abd
两个文件
find /root -iname install.log
不区分大小写find /root -user root
按所有者搜索文件find /root -nouser
搜索没有所有者的文件, 一般情况下,没有所有者的文件是垃圾文件.注意区分.find /var/log -mtime +10
查找10天前修改的文件-10
10天内修改的文件10
10天当天修改的文件+10
10天前修改的文件-mtime
修改文件的时间-ctime
创建文件的时间-atime
文件访问的时间
find . -size 25k
查找当前目录下文件大小是25k的文件find . -inum 231623
查找当前目录下inode 为231623的文件find /etc -size +20k -a -size -50k
查找/etc目录下, 大于20k并且小于50k的文件-a
and 逻辑与- ‘-o’ or 逻辑或
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
查找/etc目录下, 大于20k并且小于50k的文件, 并显示详细信息- 总体意思就是
find /etc -size +20k -a -size -50k
的查找结果交给ls -lh
再来处理一次, 命令的标准格式即是:-exec 命令 {} \;
. - 需要注意的是: 第一个命令的结果要可以被第二个命令来处理才能保证正确执行.
- 总体意思就是
- 避免大范围搜索, 会非常消耗资源
- 示例:
find / -name install.log
在根目录下搜索文件名为install.log的文件, 不建议这么使用, 因为从根目录下搜索, 范围太大了.
- 命令格式
-
2.2 命令搜索命令
whereis
和which
whereis
搜索命令所在路径及帮助文档所在位置-b
: 只查找可执行文件-m
: 只查找帮助文件
which
与whereis
非常相似, 但which
除了返回命令的路径以外, 还可以看到命令的别名信息,whoami
查看当前用户whatis
命令的使用方法
- 字符串搜索命令:
grep
- 命令格式:
grep [选项] 字符串 文件名
在文件当中匹配符合条件的字符串 -i
忽略大小写-v
排除指定字符串
- 命令格式:
find
命令与grep
命令的区别find
是在系统当中搜索符合条件的文件名, 是对文件名进行搜索, 是完全匹配, 使用通配符模糊查询grep
是对文件中的内容进行搜索, 匹配符合条件的行或内容, 是包含匹配, 使用正则表达式模糊查询.
3 常用命令组合
// 在某个目录下查找含有关键字的文件(适用场景:查找含有关键字的文件)
grep -r "test" /data/reports
// 在log文件中检索带有‘error’字符的所有行
cat log | grep 'error'
// 在log文件中检索带有“keyword1”或“keyword2”或“keyword3”三个关键字的所有行
cat log | grep "keyword1\|keyword2\|keyword3"
// 在log文件中检索带有“keyword1”或“keyword2”或“keyword3”三个关键字的第一行(以下两行命令等效)
cat log | grep --max-count=1 "keyword1\|keyword2"
cat log | grep -m 1 "keyword1\|keyword2"
// 在log文件中检索带有“keyword1”或“keyword2”或“keyword3”三个关键字的所有行的前10行及后10行。
cat log | grep -C 10 "keyword1\|keyword2\|keyword3"
可以自由组合