使用Tauri shell API和Vue3保存转义序列

gjmwrych  于 2023-11-21  发布在  Shell
关注(0)|答案(1)|浏览(127)

我正在创建一个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


任何帮助不胜感激。

suzh9iv8

suzh9iv81#

好吧,我想明白了,如果这对别人有帮助:
问题是lsd(和其他的颜色识别工具)只在特定的上下文中发送颜色。这解决了问题:

const str = `lsd -la --color always`

字符串

相关问题