#!/bin/bash

# 压缩文件
function compress_file(){
    local file=$1
    tar -czvf "${file}.tar.gz" "$file"
    echo "文件压缩完成!"
}

# 解压缩文件
function decompress_file(){
    local compressed_file=$1
    tar -xzvf "$compressed_file"
    echo "文件解压缩完成!"
}

# 压缩目录
function compress_directory(){
    local directory=$1
    tar -czvf "${directory}.tar.gz" "$directory"
    echo "目录压缩完成!"
}

# 解压缩目录
function decompress_directory(){
    local compressed_directory=$1
    tar -xzvf "$compressed_directory"
    echo "目录解压缩完成!"
}

# 主程序入口
function main(){
    echo "请选择操作:"
    echo "1. 压缩文件"
    echo "2. 解压缩文件"
    echo "3. 压缩目录"
    echo "4. 解压缩目录"
    read -p "请输入选项数字:" option

    case $option in
        1)
            read -p "请输入待压缩的文件名:" file
            compress_file $file;;
        2)
            read -p "请输入待解压缩的文件名:" compressed_file
            decompress_file $compressed_file;;
        3)
            read -p "请输入待压缩的目录名:" directory
            compress_directory $directory;;
        4)
            read -p "请输入待解压缩的目录名:" compressed_directory
            decompress_directory $compressed_directory;;
        *)
            echo "输入错误!"
    esac
}

# 调用主程序入口
main

以上是Linux下使用Shell脚本实现文件和目录的压缩与解压缩的方法。通过调用tar命令,我们可以方便地对文件和目录进行压缩和解压缩操作。在脚本中,我们定义了四个函数,分别用于压缩文件、解压缩文件、压缩目录和解压缩目录。

在主程序入口中,我们通过用户输入选择不同的操作,然后调用对应的函数进行操作。用户可以选择压缩文件、解压缩文件、压缩目录或解压缩目录。输入错误的选项会提示输入错误,并退出程序。

在使用这些函数时,只需输入待处理文件或目录的名称,脚本会自动在当前目录下生成相应的压缩文件或解压缩文件。