我以为直到现在我都了解* nix管道…我有一个名为的可执行文件studio,它指向我的安装程序的符号链接,我Android Studio以为我可以使用
studio
Android Studio
which studio | ls -l
但这是行不通的。它给我的效果等同于仅ls -l在当前目录中运行。
ls -l
如果我跑步which studio,我会得到/home/me/bin/studio。如果我运行,ls -l /home/me/bin/studio我得到的预期输出将显示符号链接位置。
which studio
/home/me/bin/studio
ls -l /home/me/bin/studio
那么,为什么管道版本不起作用?我还没为管道抱怨什么?
为此,您需要xargs:
xargs
which studio | xargs ls -l
来自man xargs:
man xargs
xargs-从标准输入构建和执行命令行
要完全理解管道的工作原理,可以阅读BASH中管道如何工作的简单解释:
Unix管道将第一个进程的STDOUT(标准输出)文件描述符连接到第二个进程的STDIN(标准输入)。然后发生的是,当第一个进程写入其STDOUT时,第二个进程可以立即从STDIN读取该输出。