美文网首页
Bash编程019——管道

Bash编程019——管道

作者: 若梦儿 | 来源:发表于2019-01-11 10:58 被阅读25次

Bash编程019——管道

之前在输入输出重定向中提到,每个进程默认都有三个对应的文件描述符(stdin、stdout、stderr),可以通过< >来重定向进程的文件描述符。如果要在进程间传递数据的话,使用输入输出重定向就比较麻烦了。比如:

ls / > ls.txt
grep bin < ls.txt
# 输出如下:
bin
sbin

匿名管道

管道(pipe)也可以看做是重定向的一种,它的作用是将一个进程的标准输出与另一个进程的标准输入相连接。

格式:command_1 | command_2 | command_3 | .... | command_N

# 对于上面的例子,使用管道
ls \ | grep bin
# 输出为:
bin
sbin

通过使用管道,我们可以轻松地将若干个命令组合起来使用。

示例:

# 统计根目录下的文件和目录的总个数
ls / | wc -l
# 输出为:26
ls /
# 输出如下
bin
boot
cdrom
dev
etc
home
initrd.img
initrd.img.old
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
tmp
usr
var
vmlinuz
vmlinuz.old

注:wc命令可以用于统计文件的行数、单词数和字节数,具体使用方法见man wc。

再比如下面的例子:

head /proc/cpuinfo  | wc
10      41     209

ls -l /etc/ | tail
# 输出如下:
drwxr-xr-x  4 root root     4096 12月  7 21:23 vmware-tools
lrwxrwxrwx  1 root root       23 12月  7 21:10 vtrgb -> /etc/alternatives/vtrgb
-rw-r--r--  1 root root     4942 5月   9  2018 wgetrc
drwxr-xr-x  2 root root     4096 12月  7 21:19 wildmidi
-rw-r--r--  1 root root     1343 1月  10  2007 wodim.conf
drwxr-xr-x  2 root root     4096 12月  7 22:29 wpa_supplicant
drwxr-xr-x 10 root root     4096 12月  7 22:27 X11
drwxr-xr-x  5 root root     4096 12月  9 11:11 xdg
drwxr-xr-x  2 root root     4096 7月  31 08:37 xml
-rw-r--r--  1 root root      477 7月  20  2015 zsh_command_not_found

ls -l /etc | tail | sort
# 输出如下:
drwxr-xr-x 10 root root     4096 12月  7 22:27 X11
drwxr-xr-x  2 root root     4096 12月  7 21:19 wildmidi
drwxr-xr-x  2 root root     4096 12月  7 22:29 wpa_supplicant
drwxr-xr-x  2 root root     4096 7月  31 08:37 xml
drwxr-xr-x  4 root root     4096 12月  7 21:23 vmware-tools
drwxr-xr-x  5 root root     4096 12月  9 11:11 xdg
lrwxrwxrwx  1 root root       23 12月  7 21:10 vtrgb -> /etc/alternatives/vtrgb
-rw-r--r--  1 root root     1343 1月  10  2007 wodim.conf
-rw-r--r--  1 root root      477 7月  20  2015 zsh_command_not_found
-rw-r--r--  1 root root     4942 5月   9  2018 wgetrc

命名管道

上面使用的管道叫做匿名管道,还存在着另一种命名管道或者叫FIFO。命名管道是一种特殊类型的文件,主要用于进程间的通信。

示例:

# 标签页1
cd ~
mkfifo fifo
echo 1 > fifo # 此时进程会阻塞,再新打开一个标签页 ctrl+shfit+t

# 标签页2
cd ~
echo 2 > fifo # 再新打开一个标签页

# 标签页3
cat fifo 
# 输出如下,先入先出。
2
1

# 查看fifo
ls -l fifo
prw-rw-r-- 1 ruo ruo 0 1月  11 10:51 fifo

fifo文件类型为p即命名管道。

相关文章

  • Bash编程019——管道

    Bash编程019——管道 之前在输入输出重定向中提到,每个进程默认都有三个对应的文件描述符(stdin、stdo...

  • IO重定向、管道及文本处理工具

    (1)bash的快捷键 (2)bash中的I/O重定向及管道

  • bash 输入、输出

    bash特性之输入、输出重定向和管道

  • Bash编程

    资料 ABS:http://www.tldp.org/LDP/abs/html在线 Bash 手册页:https:...

  • BASH

    1、bash配置文件: 2、bash输入输出、管道 2.1重定向 2.1.1输出 为了安全先使用:set -C(s...

  • Linux之bash

    bash的基础特性之 IO重定向及管理 ] IO重定向: 输入重定向: 管道 bash基础特性之自动补充命令 ba...

  • fifo()函数

    linux系统编程之管道(三):命名管道FIFO和mkfifo函数 - Meditation - 博...

  • Linux基础学习四

    1.bash及其特性(脚本解释器) bash支持:命令历史;管道,重定向;命令别名;命令行编辑;命令行展开;文件名...

  • bash编程笔记

    bash编程笔记 为了能提高linux系统下的工作效率,今天打算认识下bash编程把今天学过的例子堆过来,加上简单...

  • 一些shell 命令整理

    一些基本命令 Bash 编程-变量

网友评论

      本文标题:Bash编程019——管道

      本文链接:https://www.haomeiwen.com/subject/itntdqtx.html