自己封装Linux命令行万能解压命令

问题背景

Linux下经常需要解压文件,直接在命令行敲命令解压是最便捷的。

但问题在于,不同的压缩格式,需要用不同命令和不同参数,完全记不住啊。

解决方式

既然记不住,那就换一种思路,假如有一条命令能解压所有文件,那就只需要记住这一条了。似乎可以写个脚本来处理,上网一搜,果然这么现实的需求早就有人想过并实现了。

看起来作者也是从别处学到的,就不继续溯源了。思路就是写个脚本来处理,如下

原文在 https://ynome.wordpress.com/2013/04/14/linux-%E9%80%9A%E7%94%A8%E8%A7%A3%E5%8E%8B/

    #写入.bashrc或.zshrc
    ex () {
        if [[ -z “$1” ]] ; then
               print -P “usage: \e[1;36mex\e[1;0m < filename >”
               print -P ”       Extract the file specified based on the extension”
        elif [[ -f $1 ]] ; then
           case $1 in
             *.tar.bz2)   tar xjfv $1    ;;
             *.tar.gz)    tar xzfv $1    ;;
             *.bz2)       bunzip2v $1    ;;
             *.rar)       rar x $1       ;;
             *.gz)        gunzip $1      ;;
             *.tar)       tar xf $1      ;;
             *.tbz2)      tar xjf $1     ;;
             *.tgz)       tar xzf $1     ;;
             *.zip)       unzip $1       ;;
             *.Z)         uncompress $1  ;;
             *.xz)        xz -d $1       ;;
             *.7z)        7z x $1        ;;
             *)           echo “‘$1’ cannot be extracted via extract()” ;;
           esac
       else
         echo “‘$1’ is not a valid file”
       fi
    }

将上述脚本,直接写到.bashrc中即可。
后续想要解压某个文件,直接执行ex+文件名即可。如果碰到不支持的,那搜索一下,加入此脚本,后面也就支持了。

我的修改

我为了方便管理,是单独建立了一个.autoex.sh,并在.bashrc中加了

.  ~/.autoex.sh

后面了解到,tar命令支持自动检测类型,于是把原脚本中tar系列的命令的参数,都改成了xvf.



ex () {
        if [[ -z “$1” ]] ; then
               print -P “usage: \e[1;36mex\e[1;0m < filename >”
               print -P ”       Extract the file specified based on the extension”
        elif [[ -f $1 ]] ; then
           case $1 in
             *.tar)       tar xvf  $1    ;;
             *.tbz2)      tar xvf  $1    ;;
             *.tgz)       tar xvf  $1    ;;
             *.tar.bz2)   tar xvf  $1    ;;
             *.tar.gz)    tar xvf  $1    ;;
             *.tar.xz)    tar xvf  $1    ;;
             *.tar.Z)     tar xvf  $1    ;;
             *.bz2)       bunzip2v $1    ;;
             *.rar)       rar x $1       ;;
             *.gz)        gunzip $1      ;;
             *.zip)       unzip $1       ;;
             *.Z)         uncompress $1  ;;
             *.xz)        xz -d $1       ;;
             *.lzo)       lzo -dv $1     ;;
             *.7z)        7z x $1        ;;
             *)           echo "'$1' cannot be extracted via extract()" ;;
           esac
       else
         echo “‘$1’ is not a valid file”
       fi
}

其他

用了两年了,确实方便。但也有需要注意的,那就是,这个脚本是靠后缀名来区分文件的,要是碰到不靠谱的压缩文件制作者,搞错后缀名,就可能搞不定了。
这个时候,可以用file命令查看下文件类型,再对症下药。
实在不行,就用xdg-open命令用GUI程序打开试试(xdg-open的介绍:https://www.cnblogs.com/zqb-all/p/10666474.html)。

目前脚本在我放到github上维护了,本文的脚本内容可能不是最新的,可查看 https://github.com/zqb-all/git-dot-files/blob/master/.autoex.sh

本文地址:https://www.cnblogs.com/zqb-all/p/10854199.html

原文地址:https://www.cnblogs.com/zqb-all/p/10854199.html

时间: 2024-10-10 09:52:43

自己封装Linux命令行万能解压命令的相关文章

Linux下压缩与解压命令tar

tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思): -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩. -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用

linux命令之——压缩解压命令

linux命令之——压缩解压命令 命令名称:gzip 命令英文原意:GUN zip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip[文件] 功能描述:压缩文件(且只能压缩文件,不保存原文件) 压缩文件格式:.gz 范例: 压缩  :gzip boduo                      压缩后的文件格式为 boduo.gz 解压缩:gunzip boduo.gz            或者(gzip -d boduo.gz) ====================

mac命令行压缩解压rar文件

去 http://www.rarlab.com/download.htm下载 rarosx 在Mac OS X系统中默认不支持 RAR 文件的解压缩.下面演示如何在Mac OS X系统中使用 rar 命令行操作. 1. 首先从rarlab 网站下载 rar/unrar 工具: 2. 解压缩下载的 tar.gz 压缩包(tar xvf rarosx-5.2.0.tar.gz),在下载目录Downloads下自动创建一个rar的目录,其中有rar / unrar 文件: 3. 进入终端(命令窗口  

Linux下常见压缩解压命令

inux zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/ -o:不提示的情况下覆盖文件: -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他 zip -d myfile.zip smart.txt 删

linux安装jdk及解压命令

注意事项:虚拟机安装的系统,不能从桌面直接拖拽传输文件,否则解压出错 查看系统自带安装的java rpm -qa | grep java 删除非.noarch文件 rpm -e --nodeps 文件名 1.创建一个目录(mkdir java)并在其内解压jdk-8u181-linux-x64.tar.gz 2.配置环境 vi  /etc/profile 并在最后添加 export JAVA_HOME=/usr/java/jdk1.8.0_181 export CLASSPATH=.:$JAVA

Linux学习之压缩解压命令

常用的有4组:gizp.tar.zip.bzip2,下面一一列出: 1.压缩命令 gzip 只能用来压缩文件,不能压缩目录. 压缩后原文件将不会被保留. 2.解压命令 gunzip 另一种等价方式是  gzip -d [gz压缩文件] 3.打包压缩命令 tar 即可用来打包压缩文件,也可打包压缩目录. 打包压缩后会保留原文件或目录. 加上参数z后才会进行压缩,否则只是打包. 打包压缩目录示例: tar -zcf myfirst.tar.gz mydir/ 4.解包解压缩命令 tar 和通过tar

Linux学习笔记(7)Linux常用命令之压缩解压命令

(1)gzip gzip命令用于压缩文件,英文原意为GNU zip,所在路径/bin/gzip,其语法格式为: gzip [文件] 压缩后的文件格式为.gz. 例:将/etc目录下的services文件拷贝至/tmp目录,并采用gzip进行压缩. [[email protected] tmp]# cp /etc/services services [[email protected] tmp]# ls services [[email protected] tmp]# gzip services

Linux下的压缩解压命令

1. linux zip命令 压缩 zip -r filename.zip ./*                  // 将当前目录下的所有文件和文件夹全部压缩成 filename.zip文件 -r表示递归压缩子目录下所有文件 解压 unzip -d test filename.zip            // 把filename.zip文件解压到 ./test -d:-d test 指明将文件解压缩到./test目录下: 2. linux tar命令 -c: 建立压缩档案 -x: 解压 -

2016/8/19 Linux常用命令 : 帮助命令、用户管理命令、压缩解压命令

1.获取帮助信息:man man ls :获取 ls 命令的帮助信息 man services :查看配置文件services的帮助信息,直接加文件名称,不需要绝对路径 帮助: 1表示命令的帮助,5表示配置文件的帮助 man  1  passwd 2. 查看命令的介绍: whatis 3.产看配置文件信息:apropos  配置文件名称 3.获得Shell 内置命令的帮助信息 : help help umask :查看 umask 命令的帮助信息 4.查看命令的选项: 命令  --help 4.