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

Linux下Fish Shell通用解压函数构建失败问题求助

Fish Shell 通用解压函数修复:tar.gz 文件无法解压的问题

你编写的ex函数在处理tar.gz文件时无反应,核心问题是switch语句错误使用了file命令的输出进行匹配。file命令返回的是文件的类型描述(比如test.tar.gz: gzip compressed data, was "test.tar", last modified: ...),而非文件名后缀,导致你定义的'*.tar.gz'这类通配符完全匹配不到任何分支,自然不会执行解压操作。

修复后的函数改为直接匹配文件名后缀,同时优化tar命令的参数(现代tar可以自动识别压缩格式,用xf即可,无需区分xjf/xvf):

function ex
    if test -f $argv[1]
        switch $argv[1]
            case '*.tar.bz2' '*.tbz2'
                tar xf $argv[1]
            case '*.tar.gz' '*.tgz'
                tar xf $argv[1]
            case '*.bz2'
                bunzip2 $argv[1]
            case '*.rar'
                unrar x $argv[1]
            case '*.gz'
                gunzip $argv[1]
            case '*.tar'
                tar xf $argv[1]
            case '*.zip'
                unzip $argv[1]
            case '*.Z'
                uncompress $argv[1]
            case '*.7z'
                7z x $argv[1]
            default
                echo "Unsupported file format for '$argv[1]'"
        end
    else
        echo "'$argv[1]' is not a valid file"
    end
end

关键修改说明:

  • 移除(file $argv[1]),直接用$argv[1]作为switch的匹配对象,基于文件名后缀判断格式
  • 合并同类tar压缩包的分支(比如*.tar.bz2和*.tbz2),简化代码
  • 所有tar类解压统一使用tar xf,无需手动指定j/z参数,tar会自动识别压缩格式
  • 添加default分支,当遇到不支持的格式时给出明确提示,避免无反应的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:50:08