已复制
全屏展示
复制代码

linux命令行管道总结


· 1 min read

一. 标准错误也能进管道

默认情况下,标准错误是不会进入管道的,看下面例子,wc -l 的统计结果为 2

$ ls -l /mnt/ /notexists
ls: cannot access '/notexists': No such file or directory
/mnt/:
total 0


$ ls -l /mnt/ /notexists | wc -l
ls: cannot access '/notexists': No such file or directory
2

除了标准输出,标准错误也可以和标准输出同时进入管道,使用|&即可,它是2>&1|的简写

$ ls -l /mnt/ /notexists |& wc -l
3

$ ls -l /mnt/ /notexists 2>&1| wc -l
3

二. 编写读取管道数据的脚本

如果想让你的脚步读取管道数据,其实就是程序能冲标准输入读取数据这里是read -r line

  • 编写 example.sh
#!/bin/bash
while read -r line;do
    echo $line
done
  • 使用 example.sh
# 读取ls -l 的标准输出、标准错误 到 example.sh 的标准输入
$ ls -l /mnt/ /notexists 2>&1| bash example.sh 
ls: cannot access '/notexists': No such file or directory
/mnt/:
total 0

# wc -l 统计 example.sh 的标准输出
$ ls -l /mnt/ /notexists 2>&1| bash example.sh | wc -l
3
🔗

文章推荐