什么是它们之间的区别?
就底层正在发生的事情而言,我能理解第二个命令是将流分叉到文件和管道中。但是我对第一个命令感到困惑。
cat dat | tee >(wc -l ) | some other command
并且
cat dat | tee file | wc -l
就底层正在发生的事情而言,我能理解第二个命令是将流分叉到文件和管道中。但是我对第一个命令感到困惑。
$(command)
替换被称为 '命令替换'。不同之处在于,通常每个命令替换会扩展为程序的多个参数,而每个进程替换则会导致程序的单个参数。举个简单的例子:ls $(echo *.*)
会生成许多文件名参数,而ls <(echo *.*)
则会给ls
一个单一的参数(当我尝试ls <(echo *.*)
时,它回应/dev/fd/63
!)。 - Jonathan Leffler