我正在创建一个Tauri + Vue 3桌面应用程序,它使用Tauri的“shell”API来进行交互,就像一个终端一样。我需要从shell捕获输出,然后在Vue中显示它。我想保留shell响应的转义序列(然后我会将其转换为HTML,但这不是问题所在)。
问题是,我知道如何用echo
保留转义序列,但不知道如何用其他使用转义序列的shell命令(例如用于颜色输出)。
这是可行的:
// (extra slashes to escape the escapes)
const str = `echo "\\033[1;37;42m SUCCESS! \\033[0m"`
const process = new Command("sh", ["-c", str])
const response = ref([])
process.stdout.on("data", (line) => {
console.log(line)
response.value.push(line)
})
process.spawn()
字符串
输出:[1;37;42m SUCCESS! [0m
<--好!
问题:
如何使用echo以外的shell命令执行同样的操作?例如,“lsd”是一个带颜色的列表,所以它必须包含转义序列。但是当我像echo一样将它传递给字符串时:
const str = `lsd -la`
型
我得到了没有转义序列的结果:
输出:(注意:下面的颜色是由Stack Overflow添加的。我的结果没有转义序列来生成颜色)。
drwxr-xr-x laz staff 576 B Sat Nov 4 11:36:34 2023 ..
.rw-r--r-- laz staff 74 B Wed Nov 1 20:46:35 2023 .gitignore
.rw-r--r-- laz staff 39 B Wed Nov 1 20:46:35 2023 build.rs
.rw-r--r-- laz staff 89 KB Thu Nov 2 11:03:19 2023 Cargo.lock
.rw-r--r-- laz staff 608 B Sat Nov 4 11:36:33 2023 Cargo.toml
型
任何帮助不胜感激。
1条答案
按热度按时间suzh9iv81#
好吧,我想明白了,如果这对别人有帮助:
问题是lsd(和其他的颜色识别工具)只在特定的上下文中发送颜色。这解决了问题:
字符串