管道用键盘上的竖线(|
)表示,它用于将一个命令通过管道传输到另一个命令。简而言之,它获取左侧命令的输出,并将其用作右侧命令的输入。为说明它的作用,下面向您展示使用两个管道的几个单个命令,如何创建新文件、向该文件添加文本并在该文件中搜索特点字符串。
这些命令分别是:
touch test
echo "this is my file" > test
grep file test
第一个命令创建了一个名为 test 的文件,第二个命令将字符串“this is my test”添加到 test文 中,第三个命令在 test 中搜索字符串“file”。
如何使用管道运行命令
上述的三个命令,使用管道连接在一起如下所示:
touch test | echo "this is my file" > test | grep file test
以上面的命令为例,第一个管道接收创建“test”文件的输出,并将其作为输入发送到第二个命令,这意味着第二个命令可以在创建的“test”文件上添加内容。然后第二个管道获取第二个命令的输出并将其用作第三个命令的输入,这意味着可以搜索必要的文本字符串。管道是单向的,即通过管道从左到右流动。
句法 :
command_1 | command_2 | command_3 | …. | command_N
管道使用示例
1. 列出所有文件和目录并将其作为 more 命令的输入。
$ ls -l | more
将 ls -l 的输出作为 more 命令的输入。此命令的最终效果是 ls -l 的输出一次显示一个屏幕。管道充当容器,它接受 ls -l 的输出并将其作为输入提供给 more。上面的命令等价于下面的命令序列:
$ ls -l -> temp
more -> temp (or more temp)
[contents of temp]
rm temp
上面两条命令的输出是一样的。
2. 使用 sort 和 uniq 命令对文件进行排序并打印唯一值。
$ sort record.txt | uniq
这将对给定的文件进行排序并仅打印唯一值。
3. 使用 head 和 tail 打印文件中特定范围内的行。
$ cat sample2.txt | head -7 | tail -5
此命令通过 (head -7) 命令选择前 7 行,并将其输入到 (tail -5) 命令,该命令最终将打印 7 行中的最后 5 行。
4. 使用 ls 和 find 列出并打印匹配文件中与特定模式匹配的所有行。
$ ls -l | find ./ -type f -name "*.txt" -exec grep "program" {} \;
此命令在给定目录中选择扩展名为.txt 的文件,并在上面的示例中搜索类似“program”的模式,并打印其中包含 program 的文件。
5. 使用 cat、grep、tee 和 wc 命令,从 result.txt 文件读取内容,筛选包含“Rajat Dua”的字符串,存储在 file2.txt 文件中并打印行数。
$ cat result.txt | grep "Rajat Dua" | tee file2.txt | wc -l
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/uncategorized/pipe-in-unix-or-linux/