exec、xargs与管道符

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 命令

五、快捷键

在这里插入图片描述

  • 移动光标的快捷键

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用和[2]的内容,可以得出以下结论: - execxargs是用于在Linux系统中执行命令的工具。 - exec命令可以用于执行shell内部的函数,而xargs命令可以将输入数据转换为命令行参数。 - 如果想让execxargs执行自定义的函数,需要先使用export -f命令导出函数。 - 使用xargs命令时,可以通过-n选项指定每次执行的参数个数。 根据你的问题,你想知道如何正确组合xargs、bash -c和环境变量。根据引用的示例代码,你可以先将需要执行的命令通过管道传递给xargs命令,然后使用bash -c来执行自定义的函数。 例如,假设你有一个命令$command,它的输出需要通过grep、awk和xargs进行处理,并且你想执行自定义的函数process来对每个参数进行处理。你可以按照以下步骤组合这些命令: 1. 首先,使用$command命令的输出作为输入,通过管道传递给grep命令,使用-F选项指定精确匹配的模式,比如"Specific :: Criterion"。 2. 然后,再次通过管道将grep命令的输出传递给awk命令,使用'{print $6}'来输出第6列的内容。 3. 最后,使用xargs命令将awk命令的输出作为参数传递给bash -c命令,使用-I选项指定参数的占位为%。在bash -c命令中,可以调用之前导出的自定义函数process来处理每个参数。 这样,每次xargs命令将一部分参数传递给bash -c命令,并使用process函数对每个参数进行处理。 综上所述,你可以正确组合xargs、bash -c和环境变量来执行自定义的函数。请根据自己的需求调整命令和函数的具体内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老伙子53

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值