shell 里的进程替换

bash 和 zsh 里都支持进程替换(Process Substitution)

写法为:

<(command) 或 >(command)

比如:

cat <(ls)       #把<(ls)当一个临时文件,文件内容是ls的结果,cat这个临时文件

ls > >(cat)      #把>(cat)当成临时文件,ls的结果重定向到这个文件,最后这个文件被cat

用进程替换将 std 和 err 输出分别定向:

$ some_command > >(/bin/cmd_for_stdout) 2> >(/bin/cmd_for_stderr)

另参考这里:

http://www.ibm.com/developerworks/cn/aix/library/au-satzsh.html 里面有更多例子,比如:

使用临时文件来将一个文件中的字段提取并重新组合到另一个文件中

cut -f1 fileone >t1
cut -f5 filetone >t5
paste t1 t5

用进程替换可以无需临时文件完成此任务

$ paste -d: <(cut -d: -f1 /etc/passwd) <(cut -d: -f5 /etc/passwd)

进程替换支持嵌套

sort <(egrep -v '^#' <(paste -d: <(cut -d: -f5 /etc/passwd)  <(cut -d: -f1 /etc/passwd) ) )

原文地址:http://hongjiang.info/shell-process-substitution/

移动端设备除iPad Pro外,其它移动设备仅能阅读基础的文本文字。
建议使用PC或笔记本电脑,浏览器使用Chrome或FireFox进行浏览,以开启左侧互动实验区来提升学习效率,推荐使用的分辨率为1920x1080或更高。
我们坚信最好的学习是参与其中这一理念,并致力成为中文互联网上体验更好的学练一体的IT技术学习交流平台。
您可加QQ群:575806994,一起学习交流技术,反馈网站使用中遇到问题。
内容、课程、广告等相关合作请扫描右侧二维码添加好友。

狐狸教程 Copyright 2021

进入全屏