exec、xargs与管道符
一、exec与xargs命令(对搜索结果处理)
1、名词解释
- exec (公司的)经理 n 网络 执行;执行命令;执行程序(executive)
- xargs 网络 命令详解;参数代换;可在管道中使用
- (英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
2 、用法
-
exec
-
find /etc/test/ -name 'f*' -exec rm -rf {} \; # 命令 1 -exec 命令2 {} \; 将命令1输入的结果当作为命令2执行的参数,其中{}为命令1执行输出结果的占位符,\是转义符, 因为分号在命令中还有它用途,所以就用\来表示这是一个分号而不是表示其它意思 # exec命令不支持命令别名
-
-
xagrs
-
命令1 |xargs 命令2 # xargs要和管道符搭配使用
-
-
ok
-
find 搜索路径 [选项] 搜索内容 -ok 命令2 {} \; 将find命令的结果交给由-exec调用的命令2处理 {}代表find命令的查找结果 -ok与-exec的区别:ok命令2在处理前会先询问用户是否这样处理
-
二、grep命令
- grep (全称:Global Regular Expression Print)命令用于根据给定的正则表达式搜索文本内容,并将匹配的行打印出来。
- grep用于根据文件的内容进行查找,而find的命令则用来根据文件的属性进行查找。
- 命令格式
grep [选项] "搜索内容" 文件名
- 选项
-a --text # 不要忽略二进制数据。
-A <显示行数> --after-context=<显示行数> # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b --byte-offset # 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-B<显示行数> --before-context=<显示行数> # 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count # 计算符合范本样式的列数。
-C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> --directories=<动作> # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> --regexp=<范本样式> # 指定字符串作为查找文件内容的范本样式。
-E --extended-regexp # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> --file=<规则文件> # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F --fixed-regexp # 将范本样式视为固定字符串的列表。
-G --basic-regexp # 将范本样式视为普通的表示法来使用。
-h --no-filename # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H --with-filename # 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i --ignore-case # 忽略字符大小写的差别。
-l --file-with-matches # 列出文件内容符合指定的范本样式的文件名称。
-L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。
-n --line-number # 在显示符合范本样式的那一列之前,标示出该列的编号。
-P --perl-regexp # PATTERN 是一个 Perl 正则表达式
-q --quiet或--silent # 不显示任何信息。
-R/-r --recursive # 此参数的效果和指定“-d recurse”参数相同。
-s --no-messages # 不显示错误信息。
-v --revert-match # 反转查找。
-V --version # 显示版本信息。
-w --word-regexp # 只显示全字符合的列。
-x --line-regexp # 只显示全列符合的列。
-y # 此参数效果跟“-i”相同。
-o # 只输出文件中匹配到的部分。
-m <num> --max-count=<num> # 找到num行结果后停止查找,用来限制匹配行数
- 规则
^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* # 一起用代表任意字符。
[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
(..) # 标记匹配字符,如'(love)',love被标记为1。
< # 锚定单词的开始,如:'<grep'匹配包含以grep开头的单词的行。
> # 锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。
x{m} # 重复字符x,m次,如:'0{5}'匹配包含5个o的行。
x{m,} # 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。
x{m,n} # 重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。
\w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b # 单词锁定符,如: '\bgrep\b'只匹配grep。
三、管道符
1、管道符的作用
- “|”是Linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
命令1 | 命令2 | 命令3 | 命令4
-
示例
-
查看/etc/passwd文件内容并将包含root的行输出
-
cat /etc/passwd | grep 'root'
-
四、别名和快捷键
1、给命令起别名
-
临时用,只存在与当前状态下,重启后消失。
alias 别名='原命令' 等号两边不要空格,若命令包含空格,则一定要加'' alias zhangsan='ls -a'
-
永久使用,写入硬盘中。
vim ~/.bashrc alias 别名='原命令' 保存后重启或重新加载.bashrc文件 # source .bashrc
-
删除别名 unalias 别名
-
别名被加载到内存中后,若只将.bashrc文件里的别名删除,内存里的别名仍然存在;若想将内存中的别名删除,使用 unalias 命令
五、快捷键
- 移动光标的快捷键