当前位置: 首页 > 面试题库 >

Unix管道进入ls

微生毅
2023-03-14
问题内容

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

which studio | ls -l

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

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

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


问题答案:

为此,您需要xargs

which studio | xargs ls -l

来自man xargs

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

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

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



 类似资料:
  • 问题内容: 我知道这个话题已经出现好几次了,但是我仍然停留在某一点。我需要编写一个模拟管道的程序。 我的代码在这里:http : //ideone.com/fedrB8 它对于多达3个命令完全可以正常工作,但是当涉及4个或更多命令时,它不再起作用,并且经过数小时的分析,我仍然无法弄清问题所在。 问题答案: 不是专家,但似乎以下几行是问题所在: 尽量不要在那里关闭。 我认为,父母正在尝试关闭与孩子同

  • 因此,服务器和客户端都发生这种情况。我有来自通道活动方法的通道处理程序上下文,我正在尝试使用写入AndFlush(对象消息)方法向其写入对象,但似乎消息永远不会进入创建的管道。 下面是我的客户端处理程序的样子(我重写了包解码器和编码器中的一些方法来调试) 这是我如何写入ChannelHandlerContext通道变量 当我运行我的代码时,“从客户端写入服务器的数据”是打印机,但“在客户端上编码的

  • PS:如果您想要Postgresql容器中的日志:

  • Process 结构体代表了一个正在运行的子进程,并公开了stdin(标准输入),stdout(标准输出) 和 stderr(标准错误) 句柄,通过管道和底层的进程交互。(原文:The Process struct represents a running child process, and exposes the stdin, stdout and stderr handles for int

  • 问题内容: 我正在尝试使用PhantomJS将html页面呈现为pdf。我不想将文件写入磁盘,内存中有html,并且内存中需要pdf。 使用从Pooria阿芝米的出色答卷,在这个问题,我能够从命名管道获取PDF。当另一端尝试相同时(用命名管道替换输入文件),我最终得到一个空白的pdf。 这就是我现在正在做的(简体): 然后在另一个终端: 文件out.pdf已创建,但为空白。我想念什么吗? 问题答案

  • 问题内容: 本质上,我正在尝试替换: 为了避免使用硬盘驱动器,请在C ++中使用管道。这是我的代码: 我绝对可以确保上述字符串已正确初始化。但是,发生了两件事对我来说没有意义: (1)我正在执行的程序报告“输入文件为空”。由于我未使用“ <”调用程序,因此不应期望输入文件。相反,它应该期待键盘输入。此外,它应该阅读“ gulp_command”中包含的文本。 (2)程序的报告(通过标准输出提供)出