所以我正在学习bash中的管道,我找到了这个简洁的描述:
Unix管道将第一个进程的STDOUT(标准输出)文件描述符连接到第二个进程的STDIN(标准输入)。然后发生的是,当第一个进程写入其STDOUT时,第二个进程可以立即从其STDIN读取该输出。
在此理解的基础上,让我们将printf
的STDOUT连接到ls
的STDIN。为简单起见,打印父目录(printf ..
)。
~/Desktop/pipes$ mkdir sub
~/Desktop/pipes$ ls
sub
~/Desktop/pipes$ cd sub
(no files)
~/Desktop/pipes/sub$ printf .. | ls
(no files)
~/Desktop/pipes/sub$
我想要执行:
ls ..
,但似乎我只得到了ls
。为什么会这样?如何使用管道符号列出父目录下的文件?我是否误解了管道符号?
ls
不从标准输入读取。因此,ls ..
是在这里获取您想要的内容的方法。man ls
是您的好朋友。 - codeforesterls
的属性吗?否则,我对管道的理解是正确的吗?ls ..
没有从标准输入中获取..
参数吗? - Kenny Wordenxargs
命令与ls
命令结合。@KennethWorden - Inianls
的一个属性,它不会从标准输入读取参数(因此管道不会产生任何效果)。 - Sir Athos