KDE Dolphin自定义目录右键菜单处理含空格目录路径的问题
KDE Dolphin自定义目录右键菜单处理含空格目录路径的问题
我之前也碰到过一模一样的问题!这本质是bash -c处理参数时的引号逻辑导致的——你原来的写法里,%F展开后带空格的路径会被bash当成多个参数拆分,根本没法正确识别成单个目录。给你两个靠谱的解决办法:
方法一:用bash位置参数传递(推荐)
直接修改.desktop文件里的Exec行,改成下面这样:
Exec=konsole --noclose -e bash -c '/sc/dirs_merge.py -s "$@"' _ %F
为什么这样管用?
_是给bash -c的$0(脚本名占位符)用的,必须加上,否则第一个目录路径会被当成$0而非实际参数;%F会把你选中的每个目录路径作为单独的参数传递给bash;"$@"会完整保留每个路径的原始格式(包括空格、特殊字符),不会被bash拆分,完美传递给你的Python脚本。
方法二:转义引号包裹参数
如果你不想用位置参数,也可以把%F用双引号括起来,同时在.desktop里转义引号:
Exec=konsole --noclose -e bash -c '/sc/dirs_merge.py -s "%F"'
不过这个方法有个小局限:当你选中多个目录时,%F会把所有路径用空格连起来变成一个字符串,你的脚本需要自己去拆分这个字符串(还要处理里面的空格),不如方法一直接把每个目录作为单独参数传递来得省心。
最后记得保存.desktop文件,然后重启Dolphin或者执行kbuildsycoca5命令刷新KDE的服务缓存,这样新的动作就能生效啦!
备注:内容来源于stack exchange,提问作者Amarabottiglia
相关产品推荐
相关产品推荐

