Bash调用Vim时的异常求助:含空格文件名处理故障
修复带空格路径的脚本问题
问题根源
脚本出现创建两个文件的核心原因是变量引用时未用双引号包裹,shell会把带空格的路径拆分成两个独立参数传给vim,导致vim误判为两个新文件。另外变量定义时的反斜杠在双引号中是多余的,双引号内的空格不需要额外转义。
修复后的脚本方案一(保留原sed处理逻辑)
var="/home/l l.tex" dar=$(echo "$var" | sed 's/\/home\//@/g') bar=$(echo "$dar" | sed 's/@//g') alacritty -e vim "$bar"
- 所有变量引用(
$var、$dar、$bar)都用双引号包裹,确保带空格的路径被作为单个整体传递。 - 变量
var直接用双引号包裹带空格的路径,无需额外反斜杠转义。
更高效的方案二(用shell内置功能替代sed)
不需要调用外部sed工具,直接用shell内置的参数替换功能去掉/home/前缀,更简洁高效:
var="/home/l l.tex" bar="${var#/home/}" alacritty -e vim "$bar"
${var#/home/}的作用是删除变量var开头的/home/字符串,直接得到目标路径l l.tex。
内容的提问来源于stack exchange,提问作者IloveMath
相关产品推荐
相关产品推荐

