which 命令

在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

1   which 查看可执行文件的位置。
2   whereis 查看文件的位置。
3   locate 配合数据库查看文件位置。
4   find 实际搜寻硬盘查询文件名称。

which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
常用参数:
1 -n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
实例:
(1) 查看 ls 命令是否存在,执行哪个
1 whichls
(2) 查看 which
1 whichwhich
(3) 查看 cd
1 which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
查看当前 PATH 配置:

1 echo$PATH
或使用 env 查看所有环境变量及对应值文档编辑命令 grep 命令强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。

grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file|dir
常用参数:

1   -A n --after-context显示匹配字符后n行
2   -B n --before-context显示匹配字符前n行
3   -C n --context 显示匹配字符前后n行
4   -c --count 计算符合样式的列数
5   -i 忽略大小写
6   -l 只列出文件内容符合指定的样式的文件名称
7   -f 从文件中读取关键词
8   -n 显示匹配内容的所在文件中行数
9   -R 递归查找文件夹

grep 的规则表达式:

 ^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 2 #锚定行的结束 如:'grep'匹配所有以grep结尾的行。
3   . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
4   * #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
5   .* #一起用代表任意字符。
6   [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
7   [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个
字母开头,紧跟rep的行。
8   \(..\) #标记匹配字符,如'\(love\)',love被标记为1。
9   \< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
10  \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
11  x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
12  x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
13  x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
14  \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
15  \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
16  \b #单词锁定符,如: '\bgrep\b'只匹配grep。

实例:(1)查找指定进程
1 ps -ef |grep svn
(2) 查找指定进程个数
1 ps -ef |grep svn -c
(3) 从文件中读取关键词
1 cat test1.txt |grep -f key.log
(4) 从文件夹中递归查找以grep开头的行,并只列出文件
1 grep -lR '^grep' /tmp
(5) 查找非x开关的行内容
1 grep'^[^x]' test.txt
(6) 显示包含 ed 或者 at 字符的内容行
1 grep -E 'ed|at' test.txt

发表评论

后才能评论