如何在bash或zsh中打开由长时间运行的进程记录的URL



我有这样的命令:

docker run -p 8080:8080 -p 8081:8081 --pull always -u $(id -u):$(id -g) -v $HOME/livebooks:/data ghcr.io/livebook-dev/livebook

将记录如下内容:

latest: Pulling from livebook-dev/livebook
Digest: sha256:32095aae51bbb4ed11c4c7a9bffcd1157b9f93ec3c8b90cc3c8abe79e56c8166
Status: Image is up to date for ghcr.io/livebook-dev/livebook:latest
[Livebook] Application running at http://0.0.0.0:8080/?token=u3yt4bc43roox6ziw33joymhyvwhnyxi

由于某些原因,输出是stderr

这是一个长时间运行的过程,我希望它保持这种状态,这样我就可以用Ctrl+c杀死它。

我想把它管道到greprg来获取URL并打开它。

现在我正在做的是:

docker run --rm -p 8080:8080 -p 8081:8081 
--pull always -u $(id -u):$(id -g) 
-v $HOME/livebooks:/data ghcr.io/livebook-dev/livebook 
2>&1 
| rg -m 1 -o 'http://.*' 
| xargs xdg-open

但是是否有一些teecat魔法来打开网页,但也有完整的日志(和未来的日志)进入shell?

这应该达到您的期望:

#!/usr/bin/env bash

container=livebook
{ while sleep 1; do
url="$(docker logs $container 2>/dev/null | grep -Po 'Application running at K(.*)')"
test -z "$url" || break
done
open "$url"
} &
docker run --name $container -p 8080:8080 -p 8081:8081 --pull always -u $(id -u):$(id -g) -v $HOME/livebooks:/data ghcr.io/livebook-dev/livebook 2>&1

相关内容

  • 没有找到相关文章

最新更新