所以我了解在bash管道和我发现这个简练的描述:管道打印到ls在Bash?
UNIX管道连接STDOUT(标准输出)的 第一个进程文件描述符的所述STDIN(标准输入)第二。 然后发生的是,当第一个进程写入其STDOUT时,第二个进程可以立即读取(从STDIN) 输出。
鉴于这种认识,让我们连接的printf
标准输出到ls
标准输入。为了简单起见,打印父目录(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'不从标准输入读取。所以,'ls ..'是在这里得到你想要的东西的方法。 “男人是你的朋友”。 – codeforester
那么这仅仅是'ls'的一个属性?我对管道的理解是否正确? 'ls ..'没有采用STDIN的'..'参数吗? –
你需要'ls'使用'xargs' @KennethWorden – Inian