首页 > 其他分享 >xargs命令用法

xargs命令用法

时间:2023-05-10 10:45:54浏览次数:41  
标签:xargs mkdir echo 命令 参数 用法 输入

参考自阮一峰xargs命令教程 xargs 命令教程 - 阮一峰的网络日志 (ruanyifeng.com)

一、为什么要用xargs呢。

unix命令都有参数,有些命令可以接受标准输入(stdin)作为参数

[root@xian-01]# cat /etc/passwd | grep root
[root@xian-01]# grep --help|grep stand
Search for PATTERN in each FILE or standard input.

 

上面的代码使用了管道命令(|)。管道命令的作用,是将左侧命令(cat /etc/passwd)的标准输出转换为标准输入,提供给右侧命令(grep root)作为参数。

因为grep命令可以接受标准输入作为参数,所以上面的代码等同于下面的代码。

$ grep root /etc/passwd

但是,大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。举例来说,echo命令就不接受管道传参。


$ echo "hello world" | echo

上面的代码不会有输出。因为管道右侧的echo不接受管道传来的标准输入作为参数。

 

二、xargs命令作用

xargs命令的作用,是将标准输入转为命令行参数

$ echo "hello world" | xargs echo
hello world

上面的代码将管道左侧的标准输入,转为命令行参数hello world,传给第二个echo命令。

xargs命令的格式如下。

$ xargs [-options] [command]

真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。

xargs的作用在于,大多数命令(比如rmmkdirls)与管道一起使用时,都需要xargs将标准输入转为命令行参数。


$ echo "one two three" | xargs mkdir

上面的代码等同于mkdir one two three。如果不加xargs就会报错,提示mkdir缺少操作参数。

三、xargs单独使用(用的很少)

xargs后面的命令默认是echo


$ xargs
# 等同于
$ xargs echo

四、-d 参数与分隔符

默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。


$ echo "one two three" | xargs mkdir

上面代码中,mkdir会新建三个子目录,因为xargsone two three分解成三个命令行参数,执行mkdir one two three

-d参数可以更改分隔符。

[root@jay ~]# echo a,b,c,|xargs -d "," echo
a b c

五、-n参数

-n参数指定每次将多少项,作为命令行参数。


$ xargs -n 1 find -name

上面命令指定将每一项(-n 1)标准输入作为命令行参数,分别执行一次命令(find -name)。

下面是另一个例子。


$ echo {0..9} | xargs -n 2 echo
0 1
2 3
4 5
6 7
8 9

上面命令指定,每两个参数运行一次echo命令。所以,10个阿拉伯数字运行了五次echo命令,输出了五行。

六、--max-procs 参数

xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。

--max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。


$ docker ps -q | xargs -n 1 --max-procs 0 docker kill

上面命令表示,同时关闭尽可能多的 Docker 容器,这样运行速度会快很多。

标签:xargs,mkdir,echo,命令,参数,用法,输入
From: https://www.cnblogs.com/zed99/p/17386773.html

相关文章

  • 2023.5.9核心命令讲解实战
    目录1.帮助命令man2.文件和目录操作命令lscdmkdircpmvrmtouchbasenamedirnamechattrlsattrmd5sum3.查看文件及内容处理命令vimvicat查看文件内容morelesstailheadcut提取字段、字符uniq去重sort排序wc统计tr字符操作vimdiffdos2unix......
  • Building wheel for opencv-python (pyproject.toml) ,安装命令增加 --verbose 参数
    Mac安装paddlehub出现Buildingwheelsforcollectedpackages:opencv-python,ffmpy,jieba,seqeval,futureBuildingwheelforopencv-python(pyproject.toml)...解决方法pipinstallopencv-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple--verbose......
  • 第五章学习 循环结构,分支结构,break,continue,return的用法,接收用户数据的fmt.scanl
       packagemainimport"fmt"funcmain(){//实现功能,键盘录入学生age,name,grage,是否为vipvarageintfmt.Println("请录入年龄")//传入age地址的目的:scanln函数中,对地址的值进行改变,实际上是对age值进行改变fmt.Scanln(&age)varname......
  • Git的命令git diff和git diff --cached的作用
    1.首先看一下diff 举一个例子,比较文件t.txt和tc.txt这两个文件的差异性diff也是GNU/LINUX生态系统中的一个重要的工具,众所周知的是,linux的很多很多工具都是可以协作使用的。比如Git中就借助了diff这个文件差异性工具 2.关于gitdiff:比较本地文件和暂存区(stagingarea,ind......
  • protoc命令工具使用
    protoc参数基本含义--go_out用于指定protoc的工作方式和go代码生成的位置参数(用,分开):plugins:生成go代码所用插件paths:go代码生成的位置:import:$按照生成的go代码的包的全路径来创建目录层级例如:在demo.proto中定义了optiongo_package="project/demo",那么就会......
  • Docker CLI docker compose rm常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • python 中 re.match 和 re.search用法
     001、re.match>>>re.match("ab","abcdefgab")##在字符串abcdefgab中查找字符串ab,返回索引<re.Matchobject;span=(0,2),match='ab'>>>>re.match("xy","abcdefgab")##如果查找字符串不存在,返回none&g......
  • 终端常用命令(自用)
    记录文件解压缩,解决向日葵无法连Ubuntu,ubuntu+jekyll搭建个人博客等命令。文件解压缩压缩tar-czvffilename.tar.gz/xxx/folder分割split-b4000M-a2-dfilename.tar.gzfilename.tar.gz.–verbose#命令最后的一个点"."不能丢了#-b意思是切分片大小,其单位......
  • python中strip和split的用法
    strip()用法str.strip()作用是删除字符串(str)的头和尾的空格,以及位于头尾的\n,\t等。不抓取字符串中间的空格,只抓头尾示例1:str="ABCABCABC\n"print(str)#输出原始字符串str,'\n'会空格一行print(str.strip())#删除头部空格,以及尾部的\nprint(str.ls......
  • git 基本命令记录
    gitinit //初始化本地仓库gitadd*** //添加指定***文件到暂存区gitadd. //添加该目录下所有文件到暂存区gitcommit-m'**注释**' //将文件提交仓库(注释为自己可以添加的信息gitstatus //查看暂存区的状态(例如是......