Linux xarges

2023-11-01

对于管道|之后的一部分命令可以用stdin进行输入,如:

cat a | grep test

但有些命令只能用参数形式,就要使用xargs了,xargs可以将stdin转化为参数,类似于find命令中的-exec选项。
xargs也可以将单行或多行文本进行重新格式化。
下面示例是将多行输入处理为单行输出:

[student@myhost ~]$ cat a
space: 
tab:	
[student@myhost ~]$ cat a | xargs
space: tab:

通过以上命令我们知道了通道符后直接跟xargs可以将多行变为单行。
通过xargs的-n选项可以让单行变为多行,-n后跟的数字为每行的参数数量,以IFS(默认空格)为分隔符:

[student@myhost ~]$ cat a
1 2 3 4 5 6 7 8
[student@myhost ~]$ cat a | xargs -n 3
1 2 3
4 5 6
7 8

我们也可以自定义分隔符,使用-d选项确定分隔符:

[student@myhost ~]$ echo "1a2a3a4a5" | xargs -d a -n 2
1 2
3 4
5

我们可以用xargs给命令输入参数:

[student@myhost ~]$ cat a                #a为要执行的文件
echo $*#
[student@myhost ~]$ bash a 1
1#
[student@myhost ~]$ bash a 1 2 3
1 2 3#
[student@myhost ~]$ cat args             #xargs文件内容为要输入的参数
1 2 3
[student@myhost ~]$ cat args | xargs -n 1 bash a
1#
2#
3#
[student@myhost ~]$ cat args | xargs -n 2 bash a
1 2#
3#
[student@myhost ~]$ cat args | xargs -n 3 bash a
1 2 3#

当我们需要以下形式的命令参数时:

 bash a -p arg1 -o

以上命令只有arg1可变,我们可以用xargs命令的-I(大写i)选项:

[student@myhost ~]$ cat args | xargs -I {} bash a -p {} -o
-p 1 2 3 -o#

我们发现命令只替换到了{}中。
在日常工作中有些常见的与find命令一起的错误用法如:

find . -type f -name "*.txt" | xargs rm -f

以上命令删除使用find查找出来的文件,但如果文件名中有空格就有可能误删文件。我们可以这样改进它:

find . -type f -name "*.txt" -print0 | xargs -0 rm -f

以上命令中find的-print0选项含义为使用\0作为两个文件的分隔符,xargs的-0选项是将\0作为xargs命令读取的分隔符,这样就不会误删了。
统计c程序文件的LOC:

[student@myhost ~]$ find . -name "*.c" -type f -print0 | xargs -0 wc -l
 1 ./b.c
 1 ./a.c
 2 总用量

我们知道xargs不能给提供一个以上的命令提供参数,但通过while和子Shell就可以完成:

 cat b.c | (while read args; do echo $args;done )
 相当于
 cat b.c | xargs -I {} echo {}

以上命令中,while循环里可以执行多个命令,从而可以给多个命令提供同一参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux xarges 的相关文章

  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • Linux 上的基准测试程序

    对于一项任务 我们需要使用不同的优化和参数来对我们的实现进行基准测试 有没有一种可行的方法可以在Linux命令行 我知道时间 上使用不同的参数对小程序进行基准测试 从而为我提供CSV或类似内容的时间数据 输出可能类似于 Implementa
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 后台分叉无法正常工作[重复]

    这个问题在这里已经有答案了 我运行这个程序 在前景和背景中 int main int pid printf App Start pid d n getpid while 1 pid fork if pid 0 printf Child n
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建

随机推荐

  • Neo4j ① <图论>图,节点,关系,属性<知识图谱和图库>图谱,图库,优势<基础>模块,应用场景,环境搭建,浏览器

    目录 第一部分 图 和 Neo4j 1 1 图论 1 1 1 图论起源 柯尼斯堡 Konigsberg 七桥问题 1 1 2 图 和 节点 1 1 3 节点关系表达 1 1 4 属性图模型规则 1 2 知识图谱和图库 1 2 1 知识图谱
  • python selenium对应版本报错及无法找到selenium

    1 点击画红线的地方红色小灯泡 下载 cmd pip show selenium查看是否安装selenium 成功的截图如下 2 此时再次运行 发现Message session not created This version of Ch
  • JWT 续签和多设备登录

    JWT java web token 由头部 载荷 签名三部分组成 其中头部和载荷仅使用了base64进行编码 所以载荷尽量不要传递一些敏感信息 比如 密码之类的 签名主要是用于验签 防止载荷被抓包篡改 这里直接切入主题 续签 jwt to
  • java 2进制常量_【二】Java变量与常量

    1 标识符 标识符 identifier 是指用来标识某个实体的一个符号 在不同的应用环境下有不同的含义 在计算机编程语言中 标识符是用户编程时使用的名字 用于给变量 常量 函数 语句块等命名 以建立起名称与使用之间的关系 标识符通常由字母
  • 解决Flutter旋转屏幕状态栏空缺的问题

    问题 最近要实现一个视频播放器 全屏播放时需要旋转屏幕 把案例拿出来试了一下 旋转屏幕后呈现的状态是这样 解决办法 打开项目下android app src main res values styles xml 添加
  • 对象相等判断&&值传递

    文章目录 对象相等判断 和 equals 的区别是什么 hashCode 与 equals 重要 对象的相等与指向他们的引用相等 两者有什么不同 值传递 对象相等判断 和 equals 的区别是什么 它的作用是判断两个对象的地址是不是相等
  • STP协议详解

    STP协议详解 文章目录 STP协议详解 前言 一 STP协议的运行原理 二 STP协议中ROOT RP DP的选举规则 三 端口状态disable listening learning forwarding blocking所代表的含义
  • vue3组合式api 父子组件数据同步v-model语法糖的用法

    V model 大多数情况是用在 表单数据上的 但它不止这一个作用 父子组件的数据同步 有一个 语法糖 v model 这个方法简化了语法 在elementplus中 都有很多地方使用 所以我们要理解清楚 父组件 使用 v model 向子
  • 【牛客SQL】SQL10 获取所有非manager的员工emp_no

    题目描述 描述 有一个员工表employees简况如下 有一个部门领导表dept manager简况如下 请你找出所有非部门领导的员工emp no 以上例子输出 示例1 输入 drop table if exists dept manage
  • 前端学习——jQuery基础

    一 引入jQuery的js文件 此处是下载好的jquery的js文件 也可以引入cdn 二 jQuery的入口函数 三 DOM对象和jQuery对象 div div 建一个盒子
  • react——state(状态机)

    h1 h1 h1 react state 状态 h1 p react把组件看成是一个状态机 state machines 通过与用户的交互 实现不同状态渲染UI 让用户界面和数据保持一致 p p react里 只需要更新组件的state 然
  • 【Qt教程】1.7 - Qt5带参数的信号、信号重载、带参数的槽函数、槽函数重载

    原理 与C 语法一致 信号 槽函数都可以发生重载 使其在名称不变的情况下 传递过程可以携带参数 示例说明 我们从一个最普通的信号槽工程中 来修改 对信号 槽进行重载 使信号 槽携带参数 1 普通信号 工程源码 widget h ifndef
  • rank、dense_rank、row_number函数的区别

    这四个 RANK DENSE RANK NTILE ROW NUMBER 函数 都是用来对数据库中的数据进行排名的 在他们的功能各有千秋 下面介绍一下这四个函数的功能和用法 首先创建一个Student表 CREATETABLEStudent
  • 树莓派安装opencv教程

    我使用的镜像版本为 Linux version 5 10 103 v7l dom buildbot arm linux gnueabihf gcc 8 Ubuntu Linaro 8 4 0 3ubuntu1 8 4 0 使用Python3
  • C++ 仿函数的分类

    一 概述 仿函数 functor 就是使一个类的使用看上去象一个函数 其实现就是类中实现一个operator 这个类就有了类似函数的行为 就是一个仿函数类了 有些功能的的代码 会在不同的成员函数中用到 想复用这些代码 1 公共的函数 可以
  • 普通人如何抓住AI这个风口

    随着科技的发展 人工智能 AI 已经成为当今社会的风口浪尖 越来越多的行业正在应用AI技术 新的职业和商业机会也随之出现 那么 作为普通人 我们应该如何抓住这个风口呢 来看看 AI硅基小助手 是如何解答的 1 学习AI相关技能 学习AI相关
  • Shiro和Spring Security的简单对比

    Shiro和Spring Security是Java中常用的两种安全认证框架 安全认证主要包括认证和授权鉴权两部分 认证指应用程序验证一个用户信息的过程 应用程序需要确认当前的用户是否是合法的用户 用户会向应用程序提供两部分数据 身份信息和
  • Java学习-冒泡排序

    冒泡排序 通俗的理解就是将一列无序的数字按照从大到小或者从小到大的顺序进行排序的一种简单的算法 在Java中一般是将数组使用冒泡排序的方法进行排序 大致原理是遍历数组元素 然后每两个之间进行比较 将较大值或者较小值按照自己想要的排序结果进行
  • YOLOV7调用本地USB摄像头和自己训练的权重文件实时检测目标

    作者新手 挣扎于毕业的菜鸡一枚 有问题欢迎讨论 最近在做课题时想直接调用本地摄像头来测试一下自己的训练结果 查到的文章多用到onnx openvino等格式转换部署 但作者没有这方面需求 折腾一会失败了 后来发现yolo系列自带了此功能 只
  • Linux xarges

    对于管道 之后的一部分命令可以用stdin进行输入 如 cat a grep test 但有些命令只能用参数形式 就要使用xargs了 xargs可以将stdin转化为参数 类似于find命令中的 exec选项 xargs也可以将单行或多行