linux 解压压缩命令 .tar/.gz/.bz2/jar/zip/cpio……

本文详细介绍各种常见压缩格式的解压与压缩命令,包括.tar、.jar、.zip、.gz、.bz2等,涵盖了Linux环境下常用的操作,如tar、gzip、bzip2、unzip等工具的使用方法及参数解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.tar

解包:tar -xvf FileName.tar
打包:tar -cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

序号选项说明
1-c创建存档文件,与-x相斥(create)
2-t列出档案文件的文件列表
3-x解包存档文件,与-c相斥
4-A合并存档文件
5-d比较存档文件与源文件
6-r追加文件到存档文件末尾
7-u更新存档文件
8-f指定存档文件,与其它选项同时使用时,必须在最后例如tar -xjvf a.tar.bz2
9-v显示详细处理信息
10-C转到指定目录,常用于解开存档文件到指定目录
11-j调用bzip2程序
12-z调用gzip程序
13-Z调用 compress 程序
序号选项说明
1tar xjvf a.tar.bz2解压 a.tar.bz2 文件,并显示详细信息
2tar xzvf b.tar.gz -C /home/leo解压 b.tar.gz 文件,并指定解压到/home/leo/目录
3tar cjvf drivers.tar.bz2 drivers将 drivers 目录的文件打包,创建一个.tar.bz2 压缩文件

.jar

打jar包(要到指定文件夹下压缩)
jar -cvf app.jar *


.zip

解压:unzip -d 指定解压路径 FileName.zip
压缩:zip FileName.zip DirName

1、安装zip、unzip应用。

yum install zip unzip

2、压缩和解压文件

OPTIONDescribeAndOPTIONDescribe
-A调整自解压程序。-su类似 -sf 但是展示转义 UTF-8 Unicode 名称,如果存在。
-c添加单行注释。-sU类似 -sf 但是展示转义 UTF-8 Unicode 名称。
-d从 zipfile 中删除条目。-t包括在指定日期当天货之后有修改的文件。
-db展示正在执行的字节数和尚未执行(压缩)的字节数。-tt包括在指定日期之前有修改的文件。日期格式(mmddyyyy 或 yyyy-mm-dd)。
-dc展示正在执行的文件数和尚未执行(压缩)的文件数。-T测试 zipfile 的完整性。
-dd每10MB展示为一个点。-TT cmd使用命令 cmd 测试归档。
-dg将整个归档用点代表,而不是为每个文件。-u只更新有改变的文件或新文件。
-ds每个点都代表一个 siz ,其中 siz 是以 nm 为单位作为分割(0 代表没有点)。-U从 zipfile 中选择文件复制(和 --out 一起使用)。等于 --copy。
-D不添加目录条目。-v显示详细执行信息。如果只执行 “zip -v”,则展示版本信息。
-DF也写作 --dif。只包括有改变的文件或比输入归档较新的文件。-x压缩时排除文件。
-e设置解压权限,使用标准(弱)PKZip 2.0 编码,提示输入密码。-X排除额外的文件属性。
-f只更新有改变的文件。-y将软链作为链接保存,而不是作为文件。
-F修复 zipfile(-FF 更努力地修复)。拷贝潜在损坏的归档中的文件到新归档中。
-F 尝试正常读取归档并仅复制完整条目,而 -FF 尝试挽救可能导致不完整条目
-z添加 zipfile 的注释。
-FS如果日期或大小改变了就更新,系统不存在的文件就删除。-Z后接压缩方式:store(只保存,等于 -0),deflate(压缩,默认值),如果系统支持 bzip2,可以使用 bzip2 方式。
-i压缩时只包括的文件。-0只保存,不压缩。
-ic大小写不敏感。-1~-91是更快地压缩,9是更好地压缩,默认值是6。
-j不压缩目录,只压缩文件。-@从标准输入读取文件名。
-J删除 zipfile 中的前缀(unzipsfx)。-sv创建拆分时显示详细信息。
-l将 LF 转换为 CR LF (-ll 是将 CR LF 转换为 LF)-sf展示操作的文件后退出(-sf- 日志文件专属)。
-lf path打开 path 的文件作为日志文件(覆盖已存在的文件)。-sb暂停时响铃。
-la追加到已存在的日志文件。-sp在每个拆分操作结束时暂停,来切换磁盘。
-li包括 info 信息(默认只有警告和错误信息)。-s ssize使用大小为 ssize 的拆分文件大小创建拆分存档。
-m将文件移动到 zipfile 中,并从系统中删除源文件。-R递归当前目录中匹配的文件。
-n不压缩具有指定后缀的文件。-r递归目录。
-o以压缩文件列表中最新的文件的更新时间为压缩文件的更新时间。-q不显示执行过程。
–out输出到新的归档。如果输入是拆分的,输出将会默认为相同的拆分大小。使用 -s=0 或 -s- 来关闭拆分。如果覆盖旧的拆分归档,但是需要的拆分数量较少,-P使用标准编码,设置密码。
通配符
        ?        匹配任意单个字符。
        *        匹配任意个数的字符,包括00 到 正无穷)
        [list]   匹配 list 中的字符(正则),可以使用范围表示 [ac-f],排除字符 [!bf]

一般情况下,* 会跨越目录级别,比如 'a*b' 可以匹配 'ac/db'。如果使用 -ws,* 不会跨越,  **会跨越。

使用示例:

1、压缩file目录
	zip -r file.zip file 

2、把file.zip解压到file目录里面
	unzip file.zip -d file 

3、把file文件夹和file.txt压缩成为file.zip
	zip -r file.zip file file.txt 

4、直接解压到当前位置
	unzip file.zip 

5、解压adc文件夹下的所有文件
	unzip abc\*.zip 

6、查看file.zip里面的内容
	unzip -v file.zip 

7、验证file.zip是否完整
	unzip -t file.zip 

8、递归当前目录并压缩以 .h 为结尾的文件:
        zip zipfile -r . -i "*.h"
9、压缩 path 到 zipfile,排除 pattern:
        zip -x pattern pattern @ zipfile path path ...

10、归档更新:
        zip zipfile -FS -r dir

11、从 inarchive 复制 pattern 文件到 outarchive:
        zip inarchive --copy pattern pattern ... --out outarchive

12、从 old_archive 复制以 .c 结尾的文件(排除foo.c)到 new_archive:
        zip old_archive --copy "*.c" --out new_archive -x foo.c

13、修复 bad.zip 为 fixed.zip:
        zip -F bad.zip --out fixed.zip
        zip bad.zip -FF -v --out fixed.zip

14、递归当前目录,如果有 foofull 中没有的文件或有改变的文件,就压缩到 foonew 中:
        zip -r foofull . -DF --out foonew
        
15、指定目录压缩文件到指定目录下(-j 不压缩目录、-m 移动源压缩文件到zipfile中)
	zip -mvj /var/opt/zip/sys_$(date +%Y-%m-%d).zip  /var/opt/zip_test/$(date +%Y-%m-%d)/*.csv

.gz

解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName


.bz2

解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName


.bz

解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知

.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知


.Z

解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z

解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName


.rar

解压:rar x FileName.rar
压缩:rar a FileName.rar DirName


.lha

解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName


.rpm

解包:rpm2cpio FileName.rpm | cpio -div


.deb

解包:ar p FileName.deb data.tar.gz | tar zxf -

.cpio

# 解压案例
cpio -idmv < leotest.cpio
 -0--null:接受新增列控制字符,通常配合find指令的“-print0”参数使用;
 -a或--rest-access-time:重新设置文件的存取时间;
 -A--append:附加到已存在的备份文档中,且这个备份文档必须存放在磁盘上,而不能放置于磁带机里;
 -b或--awap:此参数的效果和同时指定“-ss”参数相同;
 -B:将输入/输出的区块大小改成5210Bytes;
 -c:使用旧ASCII备份格式;
 -C--io-size=:设置输入/输出的区块大小,单位是Byte;
 -d或--make-directories:如有需要cpio会自行建立目录;
 -E--pattern-file=:指定范本文件,其内含有一个或多个范本样式,让cpio解开符合范本条件的文件,格式为每列一个范本样式;
 -f或--nonmatching:让cpio解开所有不符合范本条件的文件;
 -F--file=:指定备份档的名称,用来取代标准输入或输出,也能借此通过网络使用另一台主机的保存设备存取备份档;
 -H:指定备份时欲使用的文件格式;
 -i或--extract:执行copy-in模式,还原备份档;
 -l:指定备份档的名称,用来取代标准输入,也能借此通过网络使用另一台主机的保存设备读取备份档;
 -k:此参数将忽略不予处理,仅负责解决cpio不同版本间的兼容性问题;
 -l或--link:以硬连接的方式取代复制文件,可在copy-pass模式下运用;
 -L--dereference:不建立符号连接,直接复制该连接所指向的原始文件;
 -m或preserve-modification-time:不去更改文件的更改时间;
 -M--message=:设置更换保存媒体的信息;
 -n或--numeric-uid-gid:使用“-tv”参数列出备份档的内容时,若再加上参数“-n”,则会以用户识别和群组识别码替代拥有者和群组名称列出文件清单;
 -o或--create:执行copy-out模式,建立备份档;
 -O:指定备份档的名称,用来取代标准输出,也能借此通过网络使用另一台主机的保存设备存放备份档;
 -p或--pass-through:执行copy-pass模式,略过备份步骤,直接将文件复制到目的目录;
 -r或--rename:当有文件名称需要更改时,采用互动模式;
 -R<:>----owner<:>   在copy-in模式还原备份档,或copy-pass模式复制文件时,可指定这些备份,复制的文件的拥有者与所属群组;
 -s或--swap-bytes:交换每队字节的内容;
 -S--swap-halfwords:交换每半个字节的内容;
 -t或--list:将输入的内容呈现出来;
 -u或--unconditional:置换所有文件,不论日期时间的新旧与否,皆不予询问而直接覆盖;
 -v或--verbose:详细显示指令的执行过程;
 -V--dot:执行指令时。在每个文件的执行程序前面加上“.”号;
 --block-size=:设置输入/输出的区块大小,假如设置数值为5,则区块大小为2500,若设置成10,则区块大小为5120,以此类推;
 --force-local:强制将备份档存放在本地主机;
 --help:在线帮助;
 --no-absolute-filenames:使用相对路径建立文件名称;
 --no-preserve-owner:不保留文件的拥有者,谁解开了备份档,那些文件就归谁所有;
 -only-verify-crc:当备份档采用CRC备份格式时,可使用这项参数检查备份档内的每个文件是否正确无误;
 --quiet:不显示复制了多少区块;
 --sparse:倘若一个文件内含有大量的连续0字节,则将此文件存在稀疏文件;
 --version:显示版本信息。
[root@localhost ~]# grep -E "PATH=|JAVA_HOME" /etc/environment /etc/profile /etc/profile.d/* /etc/bashrc /etc/profile: PATH=$PATH:$1 /etc/profile: PATH=$1:$PATH /etc/profile:export JAVA_HOME=/home/java/jdk-18.0.2.1+1 /etc/profile:export PATH=$JAVA_HOME/bin:$PATH /etc/profile.d/abrt-console-notification.sh:TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"` /etc/bashrc: PATH=$PATH:$1 /etc/bashrc: PATH=$1:$PATH [root@localhost ~]# grep "PATH=.*PATH" /etc/profile /etc/profile.d/* /etc/profile: PATH=$PATH:$1 /etc/profile: PATH=$1:$PATH /etc/profile:export PATH=$JAVA_HOME/bin:$PATH /etc/profile.d/abrt-console-notification.sh:TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"` [root@localhost ~]# grep -E "PATH=|JAVA_HOME" ~/.bashrc ~/.bash_profile ~/.profile ~/.bash_login /root/.bash_profile:PATH=$PATH:$HOME/bin grep: /root/.profile: 没有那个文件或目录 grep: /root/.bash_login: 没有那个文件或目录 [root@localhost ~]# sudo apt-get install bash-doc sudo: apt-get:找不到命令 [root@localhost ~]# grep -r "JAVA_HOME=" /etc/ ~/.[^.]* 2>/dev/null | sort -u /etc/java/java.conf:#JAVA_HOME=$JVM_ROOT/java /etc/java/java.conf:#JAVA_HOME=$JVM_ROOT/jre /etc/profile:export JAVA_HOME=/home/java/jdk-18.0.2.1+1 /etc/profile.save:export JAVA_HOME=/home/java /etc/profile.save:export JAVA_HOME=/home/java/jdk-17.0.16+8 /etc/rpm/macros.jpackage:%ant JAVA_HOME=%{java_home} ant /root/.bash_history:echo 'export JAVA_HOME=/home/java' >> /etc/profile /root/.bash_history:echo 'export JAVA_HOME=/home/java/jdk-17.0.16+8' >> /etc/profile /root/.bash_history:export JAVA_HOME=/home/java /root/.m2/apache-maven-3.9.11/bin/mvn: JAVA_HOME=`(cd "$JAVA_HOME"; pwd)` /root/.m2/apache-maven-3.9.11/bin/mvn: JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` /root/.m2/apache-maven-3.9.11/bin/mvn: JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 匹配到二进制文件 /etc/.profile.swp [root@localhost ~]# sudo tee /etc/profile.d/java.sh <<'EOF' > if [ -z "${JAVA_HOME}" ]; then > export JAVA_HOME=/opt/jdk-18 > case ":${PATH}:" in > *":${JAVA_HOME}/bin:"*) ;; > *) export PATH="${JAVA_HOME}/bin:${PATH}" ;; > esac > fi > EOF if [ -z "${JAVA_HOME}" ]; then export JAVA_HOME=/opt/jdk-18 case ":${PATH}:" in *":${JAVA_HOME}/bin:"*) ;; *) export PATH="${JAVA_HOME}/bin:${PATH}" ;; esac fi [root@localhost ~]# echo "JAVA_HOME: $JAVA_HOME" JAVA_HOME: /home/java/jdk-18.0.2.1+1 [root@localhost ~]# echo "Java路径: $(which java)" Java路径: /home/java/jdk-18.0.2.1+1/bin/java [root@localhost ~]# echo "${PATH//:/$'\n'}" | grep -i jdk /home/java/jdk-18.0.2.1+1/bin /home/java/jdk-17.0.16+8/bin /home/java/jdk-18.0.2.1+1 /home/java/jdk-18.0.2.1+1/bin [root@localhost ~]# ls -l /etc/profile.d/java.sh -rw-r--r-- 1 root root 174 7月 23 15:03 /etc/profile.d/java.sh [root@localhost ~]# chmod +x /etc/profile.d/java.sh [root@localhost ~]# source ~/.bashrc && source /etc/profile [root@localhost ~]# bash -x -l -c 'echo $PATH' + '[' -x /usr/bin/id ']' + '[' -z 0 ']' ++ /usr/bin/id -un + USER=root + LOGNAME=root + MAIL=/var/spool/mail/root + '[' 0 = 0 ']' + pathmunge /usr/sbin + case ":${PATH}:" in + pathmunge /usr/local/sbin + case ":${PATH}:" in ++ /usr/bin/hostname + HOSTNAME=localhost.localdomain + HISTSIZE=1000 + '[' ignoredups = ignorespace ']' + export HISTCONTROL=ignoredups + HISTCONTROL=ignoredups + export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL + '[' 0 -gt 199 ']' + umask 022 + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/256term.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/256term.sh ++ local256= ++ '[' -n '' ']' ++ '[' -n '' ']' ++ unset local256 + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/abrt-console-notification.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/abrt-console-notification.sh ++ tty -s ++ '[' -z '' ']' ++ return 0 + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/bash_completion.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/bash_completion.sh ++ '[' -z '4.2.46(2)-release' -o -z '' -o -n '' ']' ++ return + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/colorgrep.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/colorgrep.sh ++ /usr/libexec/grepconf.sh -c ++ alias 'grep=grep --color=auto' ++ alias 'egrep=egrep --color=auto' ++ alias 'fgrep=fgrep --color=auto' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/colorls.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/colorls.sh ++ '[' '!' -t 0 ']' ++ '[' -z '' ']' ++ alias 'll=ls -l' ++ alias 'l.=ls -d .*' ++ INCLUDE= ++ COLORS= ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dir_colors.xterm ']' ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dircolors.xterm ']' ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dir_colors ']' ++ for colors in '"$HOME/.dir_colors.$TERM"' '"$HOME/.dircolors.$TERM"' '"$HOME/.dir_colors"' '"$HOME/.dircolors"' ++ '[' -e /root/.dircolors ']' ++ '[' -z '' ']' ++ '[' -e /etc/DIR_COLORS.xterm ']' ++ '[' -z '' ']' ++ '[' -e /etc/DIR_COLORS.256color ']' +++ /usr/bin/tty -s +++ /usr/bin/tput colors ++ '[' x8 = x256 ']' ++ '[' -z '' ']' ++ '[' -e /etc/DIR_COLORS ']' ++ COLORS=/etc/DIR_COLORS ++ '[' -n /etc/DIR_COLORS ']' ++ '[' -e '' ']' +++ /usr/bin/dircolors --sh /etc/DIR_COLORS ++ eval 'LS_COLORS='\''rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'\''; export LS_COLORS' +++ LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:' +++ export LS_COLORS ++ '[' -z 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:' ']' ++ /usr/bin/grep -qi '^COLOR.*none' /etc/DIR_COLORS ++ unset TMP COLORS INCLUDE ++ alias 'll=ls -l --color=auto' ++ alias 'l.=ls -d .* --color=auto' ++ alias 'ls=ls --color=auto' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/java.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/java.sh ++ '[' -z /home/java/jdk-18.0.2.1+1 ']' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/lang.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/lang.sh ++ sourced=0 ++ '[' -n zh_CN.UTF-8 ']' ++ saved_lang=zh_CN.UTF-8 ++ '[' -f /root/.i18n ']' ++ LANG=zh_CN.UTF-8 ++ unset saved_lang ++ '[' 0 = 1 ']' ++ unset sourced ++ unset langfile + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/less.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/less.sh ++ '[' -x /usr/bin/lesspipe.sh ']' ++ export 'LESSOPEN=||/usr/bin/lesspipe.sh %s' ++ LESSOPEN='||/usr/bin/lesspipe.sh %s' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/vim.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/vim.sh ++ '[' -n '4.2.46(2)-release' -o -n '' -o -n '' ']' ++ '[' -x /usr/bin/id ']' +++ /usr/bin/id -u ++ ID=0 ++ '[' -n 0 -a 0 -le 200 ']' ++ return + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/which2.sh ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/which2.sh ++ alias 'which=alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' + for i in '/etc/profile.d/*.sh' /etc/profile.d/sh.local + '[' -r /etc/profile.d/sh.local ']' + '[' hxBc '!=' hxBc ']' + . /etc/profile.d/sh.local + unset i + unset -f pathmunge + export JAVA_HOME=/home/java/jdk-18.0.2.1+1 + JAVA_HOME=/home/java/jdk-18.0.2.1+1 + export PATH=/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin + PATH=/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin + '[' -f /root/.bashrc ']' + . /root/.bashrc ++ alias 'rm=rm -i' ++ alias 'cp=cp -i' ++ alias 'mv=mv -i' ++ '[' -f /etc/bashrc ']' ++ . /etc/bashrc +++ '[' '' ']' +++ shopt -q login_shell + PATH=/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin:/root/bin + export PATH + echo /home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin:/root/bin /home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/jdk-18.0.2.1+1/bin:/home/java/bin:/home/java/jdk-17.0.16+8/bin:/home/java/jdk-18.0.2.1+1:/home/java/jdk-18.0.2.1+1/bin:/home/maven/apache-maven-3.9.11/bin:/root/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin::/root/bin:/root/bin [root@localhost ~]# [root@localhost ~]# export PATH=$(echo "$PATH" | awk -v RS=: '!a[$0]++' | paste -sd:) [root@localhost ~]# java -version -bash: /home/java/jdk-18.0.2.1+1/bin/java: 无法执行二进制文件 [root@localhost ~]# echo "${PATH//:/$'\n'}" | grep -i jdk /home/java/jdk-18.0.2.1+1/bin /home/java/jdk-17.0.16+8/bin /home/java/jdk-18.0.2.1+1 确实是少了一次加载但还是存在冗余,这应该怎么解决
最新发布
07-24
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值