You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kitty终端结合sed命令:复杂字符串转义问题求助

问题解决:Kitty终端脚本中整合sed命令失效及多面板配置方案

核心问题原因

你遇到的sed命令在kitty @ launch中失效,本质是嵌套shell命令的引号与特殊字符转义错误:外层的双引号会解析内部的转义字符,导致sed的替换表达式被Shell错误拆解,无法匹配目标字符串。

修正后的完整脚本

以下脚本会自动拆分3个Kitty面板,其中第一个面板完成数据库连接字符串替换并启动Project1,另外两个面板分别运行指定项目:

# 面板1:替换Project1配置文件并启动项目
kitty @ launch sh -c 'sed -i '\''s/Server=\.\\\\SQLEXPRESS;Database=Testing;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;/Data Source=localhost;Database=Testing123;User Id=sa;Password=MyPassword\/*-432;MultipleActiveResultSets=true;Encrypt=false;/g'\'' ~/projects/Project1/appsettings.json && cd ~/projects/Project1 && ng s -o'

# 面板2:启动Project2
kitty @ launch sh -c 'cd ~/projects/Project2 && npm run dev'

# 面板3:启动Project(注意原代码中项目名可能存在笔误,保留原样)
kitty @ launch sh -c 'cd ~/projects/Project && npm run dev'

关键修正点说明

  1. 引号转义处理:
    用单引号包裹sh -c的命令内容,避免外层双引号干扰内部表达式;对sed命令内的单引号用'\''转义(这是Shell中在单引号字符串内插入单引号的标准写法)。
  2. 特殊字符转义:
    密码中的*属于Shell通配符,必须添加反斜杠\转义,防止Shell将其解析为文件名匹配。
  3. 面板规划:
    通过三次kitty @ launch创建独立面板,每个面板对应一个任务,避免后台运行导致的终端占用问题。

可选方案(当前面板作为任务面板)

如果你希望当前终端面板执行替换+启动操作,另外两个面板通过launch创建,可使用以下脚本:

# 当前面板:替换配置并启动Project1
sed -i 's/Server=\.\\\\SQLEXPRESS;Database=Testing;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;/Data Source=localhost;Database=Testing123;User Id=sa;Password=MyPassword\/*-432;MultipleActiveResultSets=true;Encrypt=false;/g' ~/projects/Project1/appsettings.json && cd ~/projects/Project1 && ng s -o

# 启动面板2运行Project2
kitty @ launch sh -c 'cd ~/projects/Project2 && npm run dev'

# 启动面板3运行Project
kitty @ launch sh -c 'cd ~/projects/Project && npm run dev'

内容的提问来源于stack exchange,提问作者ZeR0ByTe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:12:47