能否在Bash中将Unicode引号当作ASCII引号使用?
解决终端中中文引号替代英文引号的问题
问题背景
日常输入命令时,常因忘记切换输入法导致用中文引号“”/‘’替代英文引号""/'',引发命令语法错误(比如git commit -m "中文内容“会因引号不匹配失败)。此前尝试用alias -p “=\"这类命令无效,因为alias仅用于给命令设置别名,无法处理普通输入字符的替换。
解决方案:通过readline配置实现字符自动替换
利用shell的readline输入处理功能,将中文引号映射为英文引号,输入时自动完成替换:
编辑readline配置文件
创建或修改~/.inputrc文件,添加以下内容:"\xe2\x80\x9c": "\"" # 中文左引号“替换为英文左引号" "\xe2\x80\x9d": "\"" # 中文右引号”替换为英文右引号" "\xe2\x80\x98": "'" # 中文左单引号‘替换为英文左单引号' "\xe2\x80\x99": "'" # 中文右单引号’替换为英文右单引号'使配置生效
执行以下命令让配置立即生效:bind -f ~/.inputrc也可以直接重启终端,配置会自动加载。
验证效果
输入echo “你好,世界”,终端会自动将中文引号替换为英文引号,实际执行echo "你好,世界",输出结果为你好,世界,符合预期。
内容的提问来源于stack exchange,提问作者ElpieKay
相关产品推荐
相关产品推荐

