linux中的管道符

目录 一、进程管道Piping 1、简介 2、语法 二、tee管道 1、简介 2、语法 三、参数传递Xargs 1、简介 2、语法 2.1、案例测试(以rm命令为例) 3、更多xargs参数 一、进程管道Piping 1、简介 管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。 有的时候我需要根据一些条件查看一些信息内容,

目录

一、进程管道Piping

1、简介

2、语法

二、tee管道

1、简介

 2、语法

三、参数传递Xargs

1、简介

2、语法

2.1、案例测试(以rm命令为例)

3、更多xargs参数


一、进程管道Piping

1、简介

管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。

有的时候我需要根据一些条件查看一些信息内容,这个时候我们就要用到管道来一次性完成这些复杂的任务。

2、语法

命令:command1 | command2  | command3

 命令1的输出,作为命令2 的输入,命令2的输出作为命令3的输入。

//查看root进程信息的第一行内容
[root@localhost test]# ps aux | grep root | head -1
root          1  0.0  0.5 193832  5000 ?        Ss   08:54   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

ps aux:查询进程信息

grep root:筛选root

head -1:显示第一行


二、tee管道

1、简介

三通管道,即交给另一个程序处理。又保存一份副本

 2、语法

命令:程序命令 | tee  存放副本文件。

//将list的输出内容存放一个副本到time中,在终端输出list的前三行内容。
[root@localhost ~]# cat /test/list | tee /test/time | head -3
111111
222222
333333
//查看time文件内容
[root@localhost ~]# cat /test/time
111111
222222
333333
444444
555555
666666

 

 


三、参数传递Xargs

1、简介

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,比如rm命令

xargs 一般是和管道一起使用。

2、语法

命令:程序命令 | xargs   一些不支持管道传递参数的命令

2.1、案例测试(以rm命令为例)

1)准备需要的文件

//创建file1,file2,file3,file4,file5,五个文件
[root@localhost ~]# touch /test/file{1..5}
[root@localhost ~]# ls /test
file1  file2  file3  file4  file5  list

2)编辑待接受的消息内容,删除刚刚创建的部分文件

//创建存放命令的文件
[root@localhost ~]# touch /test/command
//将等会要删除的文件位置写入到command中
[root@localhost ~]# vim /test/command
[root@localhost ~]# cat /test/command
/test/file1
/test/file2
/test/file3

3)直接使用|管道传递参数和加上xargs来传递参数

//直接使用管道将command的信息参数穿送到rm命令中
[root@localhost ~]# cat /test/command | rm -rfv
//查看/test目录中的文件,发现文件并没有减少
[root@localhost ~]# ls /test
command  file1  file2  file3  file4  file5  list

//通过加上xargs来传递command参数到rm命令
[root@localhost ~]# cat /test/command | xargs  rm -rfv
已删除"/test/file1"
已删除"/test/file2"
已删除"/test/file3"
//查看/test目录中的内容,发现file1,file2,file3被删除
[root@localhost ~]# ls /test
command  file4  file5  list

3、更多xargs参数

参数:

-a file 从文件中读入作为 stdin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

这些参数可自行测试,供大家参考。

知秋君
上一篇 2024-07-04 17:12
下一篇 2024-07-04 16:48

相关推荐