我想创建一个文件管理器脚本,用于 Caja(我在标题中使用了“Nautilus Script”,这样人们就能理解我想要完成什么),它将把选定的档案(或多个档案)提取到当前位置。我最好指定 Engrampa 来执行提取,但 File-Roller 甚至命令也可以(尽管我更喜欢弹出进度对话框,就像我通过“提取此处”提取它们时一样)。
现在,您可能想知道为什么我需要一个脚本来实现这一点,因为 Caja 的上下文菜单中有“提取此处”选项,就像 Nautilus 一样。原因是我已经成功地为我在 Caja 中使用的脚本分配了键盘快捷键,所以我的目标是能够使用 Alt+X 等组合键提取选定的档案。
我对脚本的专业知识非常有限,但已经设法做了一些基本但非常有用的事情,例如以下事情,即在 Gimp 中打开选定的图像,我已将组合键 Alt+I 分配给它:
#!/bin/bash
if mimetype -b "$1" | grep image; then
gimp "$1"
fi
我用同样的方法做了一些其他的事情,效果很好,比如用图片查看器打开一个文件夹,但尝试创建一个脚本来提取选定的档案(特别是 RAR,因为这是我最常下载的)与 Engrampa (恩格拉姆帕)到当前文件夹,或者只是 Unrar 命令(罕见),什么都没发生。我思考mimetype 指定正确,我已尝试过恩格兰帕减去-H选项来查看 Engrampa 是否弹出(我所有工作的脚本在命令后都没有选项),但什么都没有发生。所以,很明显我对下面的脚本做了一些错误:
#!/bin/bash
if mimetype -b "$1" | grep application/x-rar-compressed; then
engrampa -h "$1"
fi
因此,我请求你们的专业知识来解决这个问题。虽然这不是至关重要的,因为我可以用右键单击来执行此操作,如果能实现这一点就太好了,这样我就可以为其分配一个组合键。我很乐意使用一个只用于 RAR 文件的脚本,不过,当然,最受欢迎的是可以提取任何类型的档案的脚本。虽然我会更喜欢一个 GUI 应用程序来执行此操作,这样我就可以看到进度,这不是至关重要的。提前谢谢大家,祝大家平安!
附言:我使用的是 Ubuntu 20.04,以防万一。一周前我换用了 Caja,因为 Nautilus 开发人员一直在删除功能。
答案1
非常感谢 Michal 为我指明了 Caja 变量的正确方向!起初这似乎不起作用,然后我删除了以下行:
if mimetype -b "$1" | grep application/x-rar-compressed; then
... 一切按预期运行,带有可视进度指示器,并且可以解压多个选定的档案。因此脚本代码如下:
#!/bin/bash
engrampa -h $CAJA_SCRIPT_SELECTED_FILE_PATHS
fi
我已经设置了Alt+X(用于提取)作为快捷方式/加速器,一切都很完美!
更新:我确实遇到了一个异常,即当尝试提取包含文件夹而不是文件的档案时,它会抛出一个“不支持存档类型”错误消息,因此无法提取档案(而且我做过尝试在包含文件夹的多个存档上执行此操作。但是,过了一段时间,它就好了(大多- 见下文),所以虽然我不明白为什么这些档案与包含单个文件的档案会被区别对待,以及如何纠正,但我没有抱怨!
(编辑:我遇到过几个包含文件夹的 RAR 档案仍然失败,它们没有损坏或任何问题 - 它们可以通过右键单击 > 在此处提取进行正确提取 - 因此,虽然这仍然令人困惑,并且有点烦人,但我可以忍受偶尔以这种方式来处理档案)。
所以我想与任何想要使用该脚本的人分享该信息,该脚本适用于任何格式的档案(由 Engrampa 支持)、多个选定的档案以及多部分档案。
答案2
您可以使用caja-actions
GUI 来实现这一点。
用于创建和编辑 Caja 操作的图形界面。
先安装apt install caja-actions
然后打开。
在“项目列表”下添加新命令“提取档案”。
在“命令”选项卡中添加:
Path: 7z
Parameters: x %F
Working Directory: %d
节省。
要了解“%F”和“%d”的含义,请单击参数字段右侧的“图例”按钮。
在“Mimetypes”选项卡中,添加您想要以7z
“application/zip”或“application/gzip”(不带引号)格式操作的所有类型。