【发布时间】:2019-06-28 20:34:31
【问题描述】:
情况:我想要一个可以提取最新日志(每小时更新一次)并观察它变化的单行命令。这是一个可能解释不那么晦涩的尝试:
tail -500f $(ls | grep PackageName | sort | tail -1)
上述方法实际上有效,但是当我为其创建别名时,它不会更新 $(~~~) 值。谁能给个理由?
所以,再一次尝试(这个问题的重点):
ls | grep PackageName | sort | tail -1 | tail -500f (LogFileNameTimeStampLatest)
原来它只是从最后一个管道(LogFileNameTimeStampLatest)输出结果。这也是有道理的,因为这就是倒数第二个管道命令(tail -1 首先要做的)
我想了解如何使用上一个管道的输出来指向下一个管道中的文件(而不仅仅是 LogFileName)。具体来说,如何将一个管道的输出用作另一个管道的参数?
【问题讨论】:
-
定义别名时,是用单引号还是双引号括起来?你想要单引号;双引号会给出您描述的结果。但函数通常比别名好(参见@tripleee 的回答)。
-
使用别名有哪些取舍?
-
别名适用于非常简单的快捷方式(例如
alias ll='ls -l'),但对于任何不平凡的事情,函数是要走的路。有关更多讨论和差异,请参阅this AskUbuntu question。
标签: bash command-line terminal pipe zsh