我已经在这个问题上挣扎了一段时间,如果有人能为我澄清一下,我将不胜感激。假设我试图将这两个命令通过管道连接在一起。readlink和cat
readlink Command output
$ readlink -f SUService.log
/cygdrive/c/SUService.log
Run Code Online (Sandbox Code Playgroud)
现在如果我尝试这样的事情(它失败了)
$ readlink -f SUService.log | cat
Run Code Online (Sandbox Code Playgroud)
虽然这样的事情会起作用
$ readlink -f SUService.log | xargs cat
Run Code Online (Sandbox Code Playgroud)
我想知道这是为什么?我在这里阅读了这篇文章,其中 OP 有一个类似的问题,这篇文章试图解释参数和输入之间的区别,但是我仍然无法理解已接受的答案。据我所知,readlink将结果返回到 stdout 是终端屏幕,同时cat需要输入作为参数。这反过来提示我问我如何知道命令的输出(例如 locate 或 readlink)是否可以作为下一个命令的参数?我一直在做更多的阅读,结果我想知道什么时候应该使用 xarg 命令?
下面的命令也不会失败。它只是做了一些你没想到的事情:
readlink -f SUService.log | cat
Run Code Online (Sandbox Code Playgroud)
当cat给定 stdin 时,它会将其复制到 stdout。它不会在其中查找文件名。
或者,这将从命名文件中读取:
cat "$(readlink -f SUService.log)"
Run Code Online (Sandbox Code Playgroud)
xargs也会将名称放在cat命令行上,产生相同的结果:
readlink -f SUService.log | xargs cat
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |