Bash 如何在fish shell中隐藏具有特定扩展名的文件?

Bash 如何在fish shell中隐藏具有特定扩展名的文件?,bash,shell,fish,Bash,Shell,Fish,当我在fish shell中执行ls命令时,我不想看到.pyc文件。有了bash,我可以做一个别名。对于fish,我尝试将以下内容放入~/.config/fish/config.fish function ls command ls --hide="*.pyc" end 但它不起作用。我明白了 ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...] 问题是您显然正在使用BS

当我在fish shell中执行ls命令时,我不想看到.pyc文件。有了bash,我可以做一个别名。对于fish,我尝试将以下内容放入~/.config/fish/config.fish

function ls
  command ls --hide="*.pyc"
end
但它不起作用。我明白了

ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

问题是您显然正在使用BSD ls命令。在MacOSX上,我得到了相同的错误,因为/bin/ls无法识别任何长选项。在OS X上,执行
brew安装coreutils
以获取支持
--隐藏
的GNU ls

另外,您可能希望函数的主体是

command ls --hide="*.pyc" $argv
您还可以根据输出是否将成为tty等情况使函数的行为有所不同。以下是我的功能:

function ls --description 'List contents of directory'
    set -l param --color=auto
    if isatty 1
        set param $param --indicator-style=classify
    end
    command ls $param $argv
end

看起来不接受参数
--hide
。您是否尝试过在交互式shell中使用隐藏选项的ls??您使用的是Linux还是BSD??