我如何为这个命令管道 docker-compose logs -f 做一个别名到 less?

How can I make an alias for this command piping docker-compose logs -f into less?

我有一个工作命令,我想为其创建一个别名,但似乎不知道该怎么做。工作命令是

docker-compose logs -f | less -S -R +F

这很好用,基本上从日志中删除了自动换行。

需要注意的是,在使用它时,我还希望能够有选择地向中间添加参数,以指定要尾部的特定服务。制作最终看起来像这样的东西

docker-compose logs -f service1 service2 etc... | less -S -R +F

为了能够做到这一点,我想我可以使用 xargs -I 传递可变数量的参数并将它们注入命令的中间。但是我对 bash 的技能非常有限,所以无论我 fiddle 如何使用它,我似乎都无法让它发挥作用,并且我确信有 something/some 概念我不见了。

我在发布之前尝试的别名的最后一次迭代是

alias logsx="xargs -I{} bash -c 'docker-compose logs -f \"{}\" | less -S -R +F'"

当你 运行 它似乎开始 less 但没有 docker 日志被传送到那里。

如有任何帮助,我们将不胜感激。谢谢!

你只需要一个函数。

logsx() {
    docker-compose logs -f "$@" | less -S -R +F
}

"$@" 将扩展给出的参数。所以你写 logsx service1 service2.