我知道zsh的功能:
ls -1 >foo >bar
但是,假设我要通过另一个命令运行两个输出。例如,我将如何结合这两个命令以避免两次运行
mysqldump
?mysqldump db1 | bzip2 > db1.sql.bz2
mysqldump db1 | mysql db2
我能想到的最接近的是:
mysqldump db1 >db1.sql | mysql db2
bzip2 db1.sql
但是我宁愿不将文件未压缩地写到磁盘上(这是很大的!)。
最佳答案
以下作品:
echo abc > >(gzip > 1) > >(xz > 2)
针对您的示例进行了修改(但未经测试):mysqldump db1 > >(bzip2 > db1.sql.bz2) > >(mysql db2)
或者,可能更好:{ mysqldump db1 } > >(bzip2 > db1.sql.bz2) > >(mysql db2)
//我在man zshexpn
的PROCESS SUBSTITUTION部分中找到了几乎相同的示例:关于pipe - 将stdout传递到多个进程[zsh],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4995405/