Как я могу сделать псевдоним для этой команды? docker -compose logs -f в less? - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть рабочая команда, для которой я хотел бы создать псевдоним, но не могу понять, как это сделать. Рабочая команда:

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

Это прекрасно работает, по существу удаляя перенос слов из журналов.

Предостережение заключается в том, что при использовании этого я также хочу иметь возможность добавлять аргументы в середину, чтобы указать конкретный сервис (ы) для хвоста. Делая что-то похожее на это

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

Чтобы сделать это, я подумал, что могу использовать xargs -I, чтобы передать переменное число аргументов и вставить их в середину команды. Но мое умение с bash очень ограничено, и поэтому, независимо от того, сколько я возлюсь с ним, я не могу заставить его работать, и я уверен, что что-то / какая-то концепция мне не хватает.

Последняя итерация псевдонима, который я пробовал перед публикацией, это

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

, которая при запуске, похоже, запускает less, но без протоколов docker, передаваемых туда.

Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

1 голос
/ 29 февраля 2020

Все, что вам нужно, это функция.

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

"$@" расширит заданные аргументы. Итак, вы пишете logsx service1 service2.

...