whereis
例1:搜索命令
whereis ls #搜索ls命令的路径和帮助文件的路径
whereis find #搜索find命令的路径和帮助文件的路径
例2:搜索命令的帮助文件
whereis -m ls #搜索ls命令的帮助文件
whereis -m find #搜索find命令的帮助文件
help
例1:查看命令的帮助文件
help help #查看help命令的帮助文件,显示该命令的内容和使用方法
例2:分别查看cd命令的格式、功能和详细帮助信息
help -s cd #查看cd命令的格式
help -d cd #查看cd命令的功能
help cd #查看cd命令的帮助信息
例3:查看命令ls的帮助信息
ls --help #查看ls命令的帮助信息,给出了用法和各个选项
说明:
使用help查看命令的帮助信息时需要区分是内部命令还是外部命令:
内部命令格式为help [命令],如前面的例1、例2;
外部命令需要使用[命令] --help格式,如例3。
man
例1:查看ls命令的帮助手册
man -s 1 ls #查看ls命令的帮助手册,使用鼠标上下滑动来翻页,按q键退出返回命令界面。
按q键退出返回命令界面
说明:ls是一般使用者的命令,加-s参数时用“1”选项。如果用其它章节选项会提示错误。
find
-
功能描述: 寻找文件或目录的位置。
如果有大量的文件保存在许多不同的目录中,可能需要搜索它们,以便能找出某种类型的一个或者多个文件,这就需要find命令。find命令可以按照文件名、类型、所有者甚至最后更新的时间来搜索文件。
-
语法:
find [搜索路径] [搜寻关键字] [文件或目录]
-
选项:
其中选项-type表示按照文件类型查找文件,参数为:
find命令还可以利用时间特征来查找文件,其参数:
例1:通过文件名查找
(知道文件名,不知道目录)
find / -name http.conf -print
例2:根据部分文件名查找
(不知道该文件的全名,只知道这个文件包含几个特定的字母,这时在给字查找文件名时通配符“*”、“?” )
find . -name "*http*" -print #在当前目录下查找带有http的文件
find ~ -name "*.doc" -print #查找当前目录及子目录中.doc文件并显示
find /etc -name 'f????' #查找/etc下所有以f开头后面有四个字符的文件
find . -name p1 -print #知道具体的文件名不用加引号
知道具体的文件名不用加引号,如果使用通配符需要加引号。
例3:根据文件的特征查找
(如文件的大小、修改日期等特征)
find /etc -size -2500c -print #知道一个文件尺寸小于为2500bytes
find . -size +1000000c -print #在当前目录下查找文件长度大于1M字节的文件
例4:按照文件权限模式查找文件
find . -perm 777 -print #在当前目录下查找文件权限为777的文件,即查找每个人都有可读写可执行权限的文件。
例5:忽略某个目录查找文件
find work -path "work/file" -prune -o -print
#查找work文件夹中除了file子目录的文件,忽略file文件夹中文件
例6:按文件所有者、用户组等查找文件
find work -user me -print #在/work下查找所有者为me的文件并输出
find /home/me/Documents -group me -print #在指定目录下查找属于me用户组的文件
例7:按照时间查找文件
find /home/me/Documents/work -mtime -5 print
#查找更改时间在5日内的work目录下的文件
例8:按照文件类型查找
find /home/me/Documents -type d print
#查找目标目录下所有的目录文件并显示
locate
例1:查找包含‘x’的文件
locate x|more
例2:查找指定目录下“t”开头的文件
locate /file1/t
或
locate /file1/t*
相关命令:查询命令的功能和可执行路径
whatis ls #查询ls命令的功能
which ls #查询ls命令的可执行路径
grep
-
功能描述:使用正则表达式查找文件内容。
-
语法:
grep [选项] 匹配字符串文件列表
-
选项:
正则表达式的参数有:
例1:搜索文件包含‘s’的内容
grep -n "s" 1.txt #搜索文件1.txt中包含s的行,并显示行号
例2:搜索文件的内容
grep -n '-' a #搜索文件a中,包含“-”的行,并显示行号
grep -vn '-'a #搜索文件a中,不包含“-”的行,并显示行号
grep -n '*' a #搜索文件a中,不包含“*”的行,并显示行号
例3:搜索有连续两个o字符“oo”的字串
这时候就得要使用到限定范围的字符 {} 了。 但因为 { } 的符号在 shell 是有特殊意义的,因此, 我们必须要使用字符“ \ ”来让他失去特殊意义才行。
grep -n 'o\{2\}' p #在p文件中搜索有连续两个o字符“oo”的字串
x\{m\} 重复字x字符m次,
eg:‘c\{5\}匹配包含等于5个c的行
例4:在多个文件中搜索包含“li”的行
grep -n 'li' c a #搜索当前目录下文件a和c中包含‘li’的行
grep 'any' * #搜索当前目录下的所有文件中包含‘any’的行
例5:搜索有a/b/c/d的行
grep -n '[a-d]' tmp
例6:搜索指定前后内容的行
grep -n "[^a]ail" /etc/passwd #第一个字母不是a,后面有ail的内容
grep -n "[^a]*lse" /etc/passwd #第一个字母不是a,且以lse结尾的内容
wc
例1:统计行数、字节数、字数
wc -lcw 1.txt #统计1.txt 文件的行数、字节数、字数
例2:统计文件的字数等信息
wc –c test1 #统计文件test1字节数
wc –w test1 #统计文件test1字数
wc –l test1 #统计文件test1行数
wc –L test1 #统计文件test1最长行长度
管道
管道使用时需要注意以下几点:
1)管道是单向的,一端只能输入,另一端只能用于输出,遵循“先进先出”原则。
2)管道命令只处理前一个命令的正确输出,如果输出的是错误信息,则不处理。
3)管道操作符右侧命令,必须能够接收标准输入流命令。
管道分为普通管道和命名管道两种。这里所讲的管道是普通管道。
例1:查找文件内容并显示、统计
cat a1.txt|grep "a" #查找文件a1.txt中包含a的字符串并显示
cat a1.txt|grep "a"|wc -l #查找文件a1.txt中包含a的字符串并统计行数,随后显示统计结果
例2:查找文件内容进行统计后显示
cat 1.txt|grep “s”|wc –l #统计文件1.txt中包含s的字符串行数,并显示
cat 1.txt|grep “s”|wc –w #统计文件1.txt中包含s的字符串字数,并显示
cat 1.txt|grep “s”|wc –c #统计文件1.txt中包含s的字符串字节数,并显示
例3:查找命令的输出
```bash
ls -l|grep '^d' #通过管道过滤ls -l输出内容,只显示以d开头的行
---