自定义Bash压缩函数终端无响应,求实现多文件夹批量压缩
问题原因
你的自定义函数名和系统自带的zip命令完全重名了,函数内部调用zip时会无限递归调用自己,这就是终端卡住的根本原因。
修正后的函数
把.bashrc里的函数替换成下面的版本,既解决递归问题,又支持多文件夹批量压缩:
zip() { # 遍历所有传入的文件夹参数 for dir in "$@"; do # 用command强制调用系统原生zip命令,避免递归 command zip -rvZ store "${dir}.zip" "$dir" done }
关键说明
command zip:明确指定调用系统自带的zip工具,不会触发自定义函数的递归for dir in "$@":逐个处理你传入的每个文件夹参数,实现多文件夹批量生成对应压缩包- 保留了你原来的
-rvZ store参数:递归压缩子目录、显示详细过程、使用无压缩的存储模式
使用方法
- 单文件夹压缩:
zip folder1→ 生成folder1.zip - 多文件夹批量压缩:
zip folder1 folder2 folder3→ 分别生成folder1.zip、folder2.zip、folder3.zip
生效方式
修改完.bashrc后,执行source ~/.bashrc让新函数立即生效。
内容的提问来源于stack exchange,提问作者NyanCat
相关产品推荐
相关产品推荐

