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

Fish Shell通配符函数输出异常:与原生ls命令结果不一致

Fish函数中通配符仅匹配首个文件的解决方法

问题根源在于你的函数只定义了单个参数arg。Fish会在执行命令前自动展开通配符,当你运行ls-wildcard path/*.foo时,path/*.foo会被展开成path/bar1.foo path/bar2.foo两个参数,但函数仅接收第一个参数,剩余参数被直接忽略,导致ls只处理了第一个文件。

解决方法是让函数接收所有传入的参数,有两种实现方式:

方案1:使用默认的$argv变量

Fish的$argv变量默认保存所有位置参数,修改函数如下:

function ls-wildcard
    ls $argv
end

方案2:显式声明可变参数

用...语法声明函数接收任意数量的参数:

function ls-wildcard -a args...
    ls $args
end

修改后再次运行ls-wildcard path/*.foo,通配符展开的所有文件路径都会被传入函数,ls就能正常列出所有匹配的文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:02:02