检查fish shell参数中的通配符

检查fish shell参数中的通配符,shell,fish,Shell,Fish,在为fish shell编写函数时,我想知道命令参数中是否使用了单独的通配符(不是更大表达式的一部分)。Fish在将参数传递给我的函数之前进行通配符扩展,因此,除了检查参数是否与ls的输出相同之外,我看不到一种简单的方法来实现这一点。不过,这种方法的低效让我很难过。有没有更好的方法可以做到这一点,而不必深入fish的源代码 编辑: 谢谢你的意见。具体来说,我希望添加一些类似zshell的功能,以便在rm的参数中出现*时发出警告。我知道GitHub上有一个专门针对这个的问题,但我再也找不到这个链

在为fish shell编写函数时,我想知道命令参数中是否使用了单独的通配符(不是更大表达式的一部分)。Fish在将参数传递给我的函数之前进行通配符扩展,因此,除了检查参数是否与ls的输出相同之外,我看不到一种简单的方法来实现这一点。不过,这种方法的低效让我很难过。有没有更好的方法可以做到这一点,而不必深入fish的源代码


编辑: 谢谢你的意见。具体来说,我希望添加一些类似zshell的功能,以便在
rm
的参数中出现
*
时发出警告。我知道GitHub上有一个专门针对这个的问题,但我再也找不到这个链接了。例如,我键入了
rm*.o
而不是
rm*.o
,并意外地删除了我所有的代码(…我从git带回的,但仍然是)


编辑2:
GitHub上的问题是:

不,函数无法判断其参数来自何处。如果您提供更多关于您真正想要实现的目标的详细信息,我们可能会给出另一个建议。

一般来说,适当的做法是让调用者负担引用任何通配符来阻止扩展,并适当地标记它——例如,
find
如何拥有
-name
,其中——除其他外——说“下一个参数是通配符”。外显优于内隐;你越是试图推断意图,就越有可能做错事。你可以将
rm-I
(大写
I
)与GNU
rm
一起使用。如果您试图删除三个以上的文件或使用了
-r
,这将要求您确认一次。但是,此选项不可移植到其他
rm
实现。谢谢@rubbesmocker。我知道这个选项,但我不认为它实现了我想要的——不管我是真的想删除文件还是一个意外,都与是否有超过3个文件没有真正的关联。