当前位置:首页 > 时尚

xshell解压zip文件命令

在 Xshell 里解压 zip 文件,解压件命用的解压件命命令是 unzip。别急着敲,解压件命先确认一件事:你的解压件命远程服务器上装没装这个工具。很多最小化安装的解压件命 Linux 系统默认不带 unzip,直接敲会报 command not found。解压件命

我见过不少人卡在这一步,解压件命以为 Xshell 本身有什么特殊限制。解压件命其实 Xshell 只是解压件命个终端模拟器,它负责把你在本地键盘敲的解压件命字符送到远程主机,真正干活的解压件命是远端那台机器上的 shell 和命令。所以问题不在 Xshell,解压件命在你连的解压件命那台服务器。

先验证一下:

which unzip

如果返回类似 /usr/bin/unzip 的解压件命路径,说明已经装好了,解压件命可以直接用。如果什么都没返回,那就得先安装。CentOS 系用 yum install unzip -y,Ubuntu/Debian 系用 apt install unzip -y。没有 root 权限的话,前面加 sudo。

装好之后,最基本的解压命令就一行:

unzip filename.zip

它会把压缩包里的内容解到当前目录。注意,是当前目录,不是压缩包所在目录。这两个概念经常被混淆。比如你在 /home/user 下,压缩包在 /tmp/data.zip,你敲 unzip /tmp/data.zip,解出来的文件会散落在 /home/user 里,而不是 /tmp。想解到指定位置,加 -d 参数:

unzip /tmp/data.zip -d /home/user/project

这个 -d 后面的目录如果不存在,unzip 会自动创建。省事,但也容易让你忘了自己到底把文件扔哪了。我习惯先 cd 到目标目录再解压,路径清晰,不容易乱。

有时候压缩包里文件很多,解压时屏幕刷得飞快,你根本看不清有没有报错。加个 -q 让它安静点:

unzip -q data.zip

反过来,如果你想先看看压缩包里有什么再决定解不解,用 -l:

unzip -l data.zip

它会列出文件清单,包括大小和修改时间,但不解压。这个习惯挺好,尤其是拿到别人给的压缩包,先扫一眼里面有没有奇怪的东西。

还有一种情况:压缩包里有中文文件名。Windows 下打的 zip 包,文件名编码经常是 GBK,而 Linux 默认用 UTF-8,解出来就是乱码。解决办法是加 -O 参数指定编码:

unzip -O GBK data.zip

不是所有版本的 unzip 都支持 -O,得看具体编译选项。如果不行,可以考虑用 7z 或者 iconv 转码,但那又是另一回事了。

覆盖已有文件时,unzip 默认会问你 replace filename? [y]es, [n]o, [A]ll, [N]one, [r]ename:。批量操作时这个交互很烦人。加 -o 直接覆盖,不加提示:

unzip -o data.zip

反过来,-n 是永不覆盖,已存在的文件直接跳过。这两个参数按需选用,别搞混。

解压加密的 zip 包,命令会提示你输入密码。想直接在命令里写密码也行,但会留在 shell 历史里,不安全:

unzip -P yourpassword data.zip

我一般不用 -P,宁可手动输一次。

最后提一个容易踩的坑:磁盘空间。解压前最好 df -h 看一眼目标分区还剩多少。zip 包可能只有几百兆,解出来几个 G 很正常。空间不够时 unzip 会报 write error,但已经解出来的半截文件不会自动清理,得自己手动删。

命令本身不复杂,unzip 加上几个参数就能覆盖绝大多数场景。真正花时间的是搞清楚文件从哪来、要放到哪去、编码对不对、空间够不够。这些事 Xshell 帮不了你,得自己心里有数。

分享到: