linux命令执行的结果如何快速传递给下一个管道?xargs完虐

2023-10-14 18:20

本文主要是介绍linux命令执行的结果如何快速传递给下一个管道?xargs完虐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

xargs

  • xargs是给命令传递参数的过滤器,他的作用就是将上一步的输出传递到下一命令的输入上。类似于shell脚本中$? 。
  • 这样使用的好处是什么呢?你想想每次想关闭一个进程,你是否需要先查找,然后拿着结果再去执行第二条命令,如果你将第一条命令结果传递到第二条指定位置就好了,这部args 就是这个作用
  • xargs可以将单行或多行转换成单行格式内容。但是经过xargs处理的文本换行符和空白都会被空格替换

案例

image-20220706150228788.png

  • 目前在/home/zxhtom目录下我想查看/home/zxhtom/zxh目录下的所有文件信息,我可以ls -l /home/zxhtom/zxh

  • 假如现在我们不知道zxh具体位置,如果是以前的我肯定要马骂爹了 。 不知道位置在哪还想看内容,就好比你不想花钱还想娶媳妇。好在linux并没有这么绝情,就算你不知道还是支持你大海捞针式的爱情。接下来我们看看如何实现:

  • 我们可以先通过find查找然后通过管道符和xargs将结果传递给ls -l

image-20220706151011054.png

  • 等同于ls -l /home/zxhtom/zxh /home/zxhtom/project/git/shell/org/zxh

image-20220706151130744.png

命令格式

  • cmd | xargs -item cmdtwo
命令功能
-a file读取文件内容作为输入参数
-E flagargument参数截止符 ; 有的系统时-e , 经过测试M1的mac和ubuntu 18 都是- E
-p每次执行命令参数的时候会进行用户确认提醒
-i 或 - I使用上一命令的内容-i 直接替换{}. -I 需要指定替换符
-n numxargs传递的参数个数。默认是将上一结果所有参数传递给下一命令
-t先打印命令,在执行命令
-r(no-run-if-empty)当检测到xargs的输入为空即不执行。比如xargs kill -9. 。如果没有参数会杀掉所有端口。这种情况很危险
-s num允许xargs传递的最大参数个数; -n是指定传递个数
-L num一次性将num行输入传递过去
-ddelim分隔符的意思。xargs默认的是回车符;而在命令argument的分割符是空格。我们就可以通过-d指定修改
-x退出
- P修改最大的进程数,默认是1,为0时候为as many as it can

-E

  • 到搜索到-e指定参数名时就结束传递出去。-e的参数也不会传递过去 。 e == end 意思 ,在输出内容中按照空格分割,如果匹配到-e 字符,结果输出就会结束了。
    echo a b c | xargs -E c echo
    

  • 结果只会输出 a b
  • -i || -I

  • xargs直接将命令传递给命令,但是有的时候我们的命令并不是在最后。或者说我们命令参数有些是固定,只有个别参数需要替换,那么我们就需要-I 来处理了。-i==-I {}
  • 我现在想要实现一个复制的功能。假如我们服务器上有个日志的功能按照时间生成文件名。且目前服务器上仅会存在一个这样的文件。程序员想要删除日志里不需要的内容,但是又不能直接操作源文件又不知道具体位置被运维放到了哪里,那么这个时候我们就可以使用xargs 的占位功能了。
    sudo find / -name uuid | xargs -i cp {} /home/zxhtom/temp
    
  • 通过上述命令就完成了对uuid这个日志文件的查找并且复制到/home/zxhtom/temp位置上了。

这篇关于linux命令执行的结果如何快速传递给下一个管道?xargs完虐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212304

相关文章

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u