测试是否存在特定类型的文件

Test for file with a specific type exists

在 fish 中,您可以使用 test -e hello.txt 测试特定文件是否存在,但我想知道是否有办法在文件名中使用通配符值来检查文件类型是否存在.

更具体地说,我正在创建一个快速函数来检查 Xcode 工作区,如果找到则打开它,如果没有则检查 Xcode 项目,如果找到它打开它,否则打​​印错误。

这是当前的实现:

function xcp
    open *.xcodeproj
end

function xcw
    open *.xcworkspace
end

function xc
    if test -e *.xcworkspace
        xcw
    else if test -e *.xcodeproj
        xcp
    else
        echo "No Xcode Workspace or Project in this directory."
    end
end

它当时 "works",但是当它找不到工作区或项目文件时,它会打印出关于没有匹配项的错误。然而,这是默认完成的,我想知道我是否可以以某种方式隐藏它。

这是错误输出,当它没有找到工作区,但确实找到了一个项目并打开它时:

No matches for wildcard '*.xcworkspace'.  (Tip: empty matches are allowed in 'set', 'count', 'for'.)
~/.config/fish/functions/fish_prompt.fish (line 1): if test -e     *.xcworkspace
                                                           ^
in function 'xc'
    called on standard input

试着数一数:

function xc
    set -l workspaces *.xcworkspace
    set -l projects   *.xcodeproj
    if test (count $workspaces) -gt 0
        xcw
    else if test (count $projects) -gt 0
        xcp
    else
        echo "No Xcode Workspace or Project in this directory."
    end
end