【问题标题】:Extracting a symlinked zip file's content within a directory with same name as symlink在与符号链接同名的目录中提取符号链接的 zip 文件的内容
【发布时间】:2017-03-02 08:12:12
【问题描述】:

我有一个 zip 文件名 app.zip,它有多个符号链接,名为 kafka.ziphdfs.zip 等。可以是任何东西。

$ll
lrwxrwxrwx  1 xyz xyz    7 Mar  2 13:35 app.zip
lrwxrwxrwx  1 xyz xyz    7 Mar  2 13:35 hdfs.zip -> app.zip
lrwxrwxrwx  1 xyz xyz    7 Mar  2 13:23 kafka.zip -> app.zip
lrwxrwxrwx  1 xyz xyz    7 Mar  2 13:35 myapp.zip -> app.zip

当我提取任何符号链接的 zip 文件时,它会使用原始文件名创建一个目录,如下所示:

$ unzip kafka.zip 
Archive:  kafka.zip
   creating: app/
 extracting: app/my.properties       
 extracting: app/my.sh      

我希望使用符号链接名称来提取它,我的意思是如果我要提取 kafka.zip,那么目录名称应该是 kafka 而不是 app。

【问题讨论】:

    标签: linux shell unix zip symlink


    【解决方案1】:

    在解压命令中可以指定文件夹:

    unzip kafka.zip -d kafka
    

    据我了解,您希望这种情况在没有额外参数的情况下自动发生,因此您可以制作一个小脚本来运行解压缩命令,例如:

    #!/bin/bash
    unzip $1 -d ${1%.zip}
    

    然后运行这个:

    myunzip.sh kafka.zip
    

    【讨论】:

    • 这也不是一个选项。最终用户应该得到一个 zip 文件并运行 unzip filename.zip
    • 在您的用户系统中添加类似 alias unzip='myunzip' 的选项可能是一个选项,我宁愿自己不这样做,但如果这正是您在这种情况下所需要的,它可以工作
    • 我不知道最终用户。在创建 zip 或符号链接时我可以做些什么?
    • 不这么认为,你可以将你的脚本命名为 unzip 或 (ln -s myunzip.sh unzip),但这仍然不会完全成功,因为执行它需要 ./unzip .对不起,但我开始没有想法了。你基本上想修改 unzip 命令的行为,但不能修改它所在的系统,现在我不明白你怎么能比这更接近。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2023-03-14
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2018-09-06
    • 2012-12-14
    相关资源
    最近更新 更多