一尘不染

Unix管道进入ls

linux

我以为直到现在我都了解* nix管道…我有一个名为的可执行文件studio,它指向我的安装程序的符号链接,我Android Studio以为我可以使用

which studio | ls -l

但这是行不通的。它给我的效果等同于仅ls -l在当前目录中运行。

如果我跑步which studio,我会得到/home/me/bin/studio。如果我运行,ls -l /home/me/bin/studio我得到的预期输出将显示符号链接位置。

那么,为什么管道版本不起作用?我还没为管道抱怨什么?


阅读 214

收藏
2020-06-03

共1个答案

一尘不染

为此,您需要xargs

which studio | xargs ls -l

来自man xargs

xargs-从标准输入构建和执行命令行

要完全理解管道的工作原理,可以阅读BASH中管道如何工作的简单解释:

Unix管道将第一个进程的STDOUT(标准输出)文件描述符连接到第二个进程的STDIN(标准输入)。然后发生的是,当第一个进程写入其STDOUT时,第二个进程可以立即从STDIN读取该输出。

2020-06-03