whatis
用于非实时的查询一个命令执行什么功能
执行whatis后,将会查找一个存储所有命令相关信息的数据库,根据命令名返回相关结果。
如果需要更新这个命令相关信息的数据库,执行以下命令:
# makewhatis
which
which主要是用来查找系统环境变量$PATH目录下的可执行文件。
# echo $PATH
# which ls
/bin/ls
whereis
whereis可以用来非实时的(通过数据库)查找二进制(命令)、源文件、man文件。
# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
同时显示了环境变量下的路径 以及man文件
type
type命令用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
[root@VM_158_86_centos ~]# type vim
vim 是 /usr/bin/vim
[root@VM_158_86_centos ~]# type ls
ls 是 ls --color=auto 的别名
[root@VM_158_86_centos ~]# type man
man 是 /usr/bin/man
[root@VM_158_86_centos ~]# type echo
echo 是 shell 内嵌
[root@VM_158_86_centos ~]# type declare
declare 是 shell 内嵌
在上面例子中 echo declare是shell自带的,其他是由shell外部的独立二进制文件提供的
who
who 命令显示关于当前在本地系统上的所有用户的信息
locate
在文件系统上查找符合条件的文件 实现工具:locate,find locate: 依赖于事先构建好的索引库; 系统自动实现(周期性任务) 手动更新数据库(updatedb)
工作特性: 查找速度快; 模糊查找; 非实时查找 local [OPTION]... PATTERN... -b:只匹配路径中的基名 -c:统计出共有多少个符合条件的文件 -r:ERE note*:updatedb构建需要遍历整个根文件系统,很消耗资源;
find
实时查找工具,通过遍历指定起始路径下文件系统层次结构完成文件查找
工作特性:
查找速度略慢
精确查找
实时查找
用法:
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径;默认为当前目录;
查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等标准进行;默认为找出指定路径下的所有文件;
处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出
查找条件:
表达式:选项和测试
测试:结果通常为布尔型boolean
根据文件名:
-name "pattern"
-iname "pattern" --ignorecase name pattern
支持glob风格的通配符:
*,?,[],[^]
-regex pattern :支持正则表达式模式查找文件,匹配是整个路径,而非其名
根据从属关系查找
-user USERNAME
-group GROUPNAME
-uid UID
-gid GID
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
根据文件类型查找:
-type TYPE:
f:普通文件
d:目录文件
l:符号文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
组合测试
与:-a,默认组合逻辑;
或:-o ex:find -type f -o -nouser -ls
非:-not或!
ex:find -type f -o (-type d -o -nouser -not -nogroup)
根据文件的大小查找
-size[+|-]#UNIT
常用单位:k,M,G
#UNIT:(#-1,#] 大于#-1,小于等于#
-#UNIT:[0,#-1]
+#UNIT:(#,oo)
根据时间搓查找
以天:
-atime [+|-]# 过去#天访问的文件
#:[#,#+1)
-#:(#,0]
+#:(oo,#-1]
-mtime
-ctime
以分钟
-amin
-mmin
-cmin
根据权限查找:
-perm [/|-]mode --permission
mode:精确权限
/mode:任何一类用户u,g,o的权限中的任何一位(r,w,x)符合条件 即满足
9位权限之间存在“或”的关系
ex:find ./ -perm /666 -ls
-mode:每一类用户u,g,o的权限中的每一位(r,w,x)同时符合条件 即满足
9位权限之间存在“与”的关系
处理动作:
-print:默认为输出至标准输出
-ls:
-delete:
-fls /PATH/TO/SOMEFILE:把查找的所有文件的长格式信息保存指定文件中
-ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令,{}表示引用找到的文件 \;表示固定格式
查找没有属主和属组的文件 添加root:root属主属组关系
find ./ -nouser -a -nogroup -ok chown root:root {} \;
-exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令 不用每次操作经用户确认
查找other用户具有写权限的文件 重名为file.danger
find ./ -perm /002 -exec mv {} {}.danger \;
注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;有些命令不能接收过长参数
过长参数解决方案 find | xargs COMMAND
查看文件命令
Linux下查看文件内容的命令
查看文件内容的命令:
cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f