我正在通过Shell(Bash)脚本入门入门,并且存在以下疑问:
为什么以下命令不打印
cp's
目录的内容:which cp | ls -l
按照定义,管道传输是否意味着我们将一个命令的输出传递给另一个命令,即重定向输出?
有人可以帮我吗 ?我是新手..
的输出which
通过管道传递到的标准输入ls
。但是,ls
标准输入不做任何事情。您希望它(我认为)作为参数传递。有两种方法可以做到这一点:
which cp | xargs ls -l
或者
ls -l `which cp`
或者
ls -l $(which cp)
在第一个示例中,该xargs
命令采用上一个先前命令的标准输出,并使每行成为该命令的参数,其名称紧随其后xargs
。因此,例如
find / | xargs ls -l
将ls -l
在文件系统中的每个文件上执行一个操作(特有的文件存在一些问题,但这超出了此答案的范围)。
其余两个大致等效,并使用shell进行操作,将输出从扩展which
到命令行cp
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句