我有一个脚本,用于在一些docker compose容器上启动命令。
脚本运行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中运行,但它也不能解决问题。
有没有办法在docker compose中保留-T的同时修复终端输出?
因此,经过调查,我发现输出只包含n
,而不包含nr
。缺少r
是输出跳过一行但没有返回到起始位置(回车(的原因。
我制作了一个简单的bash函数,并将其添加到我的.zshrc
中(您也可以将它添加到.bashrc
中(。
clout() {
$@ | sed 's/$/r/'
}
像这样使用
clout your_command args
此函数通过管道传输命令的输出,并在看到n
时添加r
。
这是我找到的最好的解决方案。如果有人有更好的解决方案,我仍然愿意接受。