当 运行 docker-compose with -T 时终端输出损坏
Broken terminal output when running docker-compose with -T
我有一个脚本,用于在某些 docker-compose 容器上启动命令。
脚本 运行s docker-compose exec -T {container} {command}
.
我必须使用 -T(禁用伪 TTY 分配。默认情况下 docker compose exec 分配一个 TTY)选项,否则我的预提交挂钩,也 运行 这个脚本, panic: provided file is not a console
.
错误
然而,当我在自己的终端上 运行 脚本时,我得到一个损坏的输出,如下所示:
run v1.22.10
$ vite build
vite v2.7.13 building for production...
transforming...
✓ 378 modules transformed.
rendering chunks...
public/front/assets/Inter-Thin.77d96c1c.woff2 97.30 KiB
public/front/assets/Inter-ExtraLight.b6cd094a.woff2 101.79 KiB
public/front/assets/Inter-ThinItalic.d82beee8.woff2 104.00 KiB
public/front/assets/Inter-ExtraLightItalic.db229bf3.woff2 108.78 KiB
public/front/assets/Inter-Light.36b86832.woff2 101.89 KiB
public/front/assets/Inter-LightItalic.737ac201.woff2 108.72 KiB
public/front/assets/Inter-Regular.d612f121.woff2 96.55 KiB
public/front/assets/Inter-Medium.1b498b95.woff2 103.44 KiB
public/front/assets/Inter-Italic.900058df.woff2 104.37 KiB
public/front/assets/Inter-MediumItalic.81600858.woff2 109.55 KiB
public/front/assets/Inter-SemiBold.15226129.woff2 103.32 KiB
public/front/assets/Inter-SemiBoldItalic.3b6df7d0.woff2 109.42 KiB
public/front/assets/Inter-BoldItalic.3f211964.woff2 109.19 KiB
public/front/assets/Inter-Bold.c63158ba.woff2 103.65 KiB
public/front/assets/Inter-ExtraBoldItalic.cf6b1d6c.woff2 109.09 KiB
public/front/assets/Inter-ExtraBold.307d9809.woff2 103.62 KiB
public/front/assets/Inter-Black.fc10113c.woff2 100.46 KiB
public/front/assets/Inter-BlackItalic.bc80081d.woff2 106.20 KiB
public/front/assets/TRYVesterbro-Light.59d4e0df.woff2 134.08 KiB
public/front/assets/TRYVesterbro-Regular.cf9a26a9.woff2 139.92 KiB
public/front/assets/TRYVesterbro-Medium.116a42a4.woff2 142.17 KiB
public/front/assets/TRYVesterbro-Bold.ac6caaee.woff2 144.62 KiB
public/front/assets/TRYVesterbro-ExtraBold.9be0564d.woff2 142.90 KiB
没有 -T 输出很好(每行都正确对齐)但是挂钩将无法使用前面提到的错误。
如果这是相关的,我将 zsh 用于我的 shell,但我在 bash 中尝试了 运行ning,但它也没有解决问题。
有什么方法可以在 docker-compose 中保留 -T 的同时修复终端输出吗?
所以经过调查我发现输出只包含 \n
而不是 \n\r
。缺少的 \r
是输出跳过一行但没有回到开头的原因(回车 return)。
我制作了一个简单的 bash 函数,并将其添加到我的 .zshrc
中(您也可以将其添加到您的 .bashrc
中)。
clout() {
$@ | sed 's/$/\r/'
}
这样使用
clout your_command args
此函数通过管道传输命令的输出,并在看到 \n
.
时添加 \r
这是我找到的最佳解决方案。如果有人有更好的解决方案,我仍然愿意接受。
我有一个脚本,用于在某些 docker-compose 容器上启动命令。
脚本 运行s docker-compose exec -T {container} {command}
.
我必须使用 -T(禁用伪 TTY 分配。默认情况下 docker compose exec 分配一个 TTY)选项,否则我的预提交挂钩,也 运行 这个脚本, panic: provided file is not a console
.
然而,当我在自己的终端上 运行 脚本时,我得到一个损坏的输出,如下所示:
run v1.22.10
$ vite build
vite v2.7.13 building for production...
transforming...
✓ 378 modules transformed.
rendering chunks...
public/front/assets/Inter-Thin.77d96c1c.woff2 97.30 KiB
public/front/assets/Inter-ExtraLight.b6cd094a.woff2 101.79 KiB
public/front/assets/Inter-ThinItalic.d82beee8.woff2 104.00 KiB
public/front/assets/Inter-ExtraLightItalic.db229bf3.woff2 108.78 KiB
public/front/assets/Inter-Light.36b86832.woff2 101.89 KiB
public/front/assets/Inter-LightItalic.737ac201.woff2 108.72 KiB
public/front/assets/Inter-Regular.d612f121.woff2 96.55 KiB
public/front/assets/Inter-Medium.1b498b95.woff2 103.44 KiB
public/front/assets/Inter-Italic.900058df.woff2 104.37 KiB
public/front/assets/Inter-MediumItalic.81600858.woff2 109.55 KiB
public/front/assets/Inter-SemiBold.15226129.woff2 103.32 KiB
public/front/assets/Inter-SemiBoldItalic.3b6df7d0.woff2 109.42 KiB
public/front/assets/Inter-BoldItalic.3f211964.woff2 109.19 KiB
public/front/assets/Inter-Bold.c63158ba.woff2 103.65 KiB
public/front/assets/Inter-ExtraBoldItalic.cf6b1d6c.woff2 109.09 KiB
public/front/assets/Inter-ExtraBold.307d9809.woff2 103.62 KiB
public/front/assets/Inter-Black.fc10113c.woff2 100.46 KiB
public/front/assets/Inter-BlackItalic.bc80081d.woff2 106.20 KiB
public/front/assets/TRYVesterbro-Light.59d4e0df.woff2 134.08 KiB
public/front/assets/TRYVesterbro-Regular.cf9a26a9.woff2 139.92 KiB
public/front/assets/TRYVesterbro-Medium.116a42a4.woff2 142.17 KiB
public/front/assets/TRYVesterbro-Bold.ac6caaee.woff2 144.62 KiB
public/front/assets/TRYVesterbro-ExtraBold.9be0564d.woff2 142.90 KiB
没有 -T 输出很好(每行都正确对齐)但是挂钩将无法使用前面提到的错误。
如果这是相关的,我将 zsh 用于我的 shell,但我在 bash 中尝试了 运行ning,但它也没有解决问题。
有什么方法可以在 docker-compose 中保留 -T 的同时修复终端输出吗?
所以经过调查我发现输出只包含 \n
而不是 \n\r
。缺少的 \r
是输出跳过一行但没有回到开头的原因(回车 return)。
我制作了一个简单的 bash 函数,并将其添加到我的 .zshrc
中(您也可以将其添加到您的 .bashrc
中)。
clout() {
$@ | sed 's/$/\r/'
}
这样使用
clout your_command args
此函数通过管道传输命令的输出,并在看到 \n
.
\r
这是我找到的最佳解决方案。如果有人有更好的解决方案,我仍然愿意接受。