将密码选项添加到默认压缩菜单 - 20.04

将密码选项添加到默认压缩菜单 - 20.04

当我点击压缩选项位于文件或文件夹上,通过右键单击该文件并选择压缩,我会看到一个简单的菜单表单,只允许我选择要转换为的文件类型:zip、7zip、tar.xz。是否可以添加选项密码到那个简单的菜单,这样我就可以更快地转换受密码保护的文件(而不必进入菜单并选择密码选项)?谢谢!

答案1

我创建了一个非常基本的脚本来调用它Nautilus(文件管理器)操作。您可以使用FileManager-Actions 配置工具

安装FileManager-Actions 配置工具使用:

$ sudo apt install filemanager-actions

我的脚本使用禅意显示输入表单。如果zenity尚未安装,您可以使用以下方式安装:

$ sudo apt install zenity

脚本如下:

#!/bin/bash

if (( $# != 1 )) ; then
  aname=""
else
  aname="$(echo "$1"|sed -e 's/\.[^./]*$//').7z"
fi
answer=$(zenity --forms --title="Create Compressed File" \
 --text="Archive Name: $aname" --add-entry="New Archive Name:" \
 --add-password="Password:" --add-password="Confirm Password:")
case "$?" in
  1) echo "Cancelled" >&2 ; exit 1 ;;
  -1) echo "Error!" >&2 ; exit -1 ;;
  0) IFS="|" read -r newaname pass1 pass2 <<< "$answer" ;;
esac
if [[ "$pass1" != "$pass2" ]] ; then
  echo "Passwords do no match!" >&2
  exit 2
fi
if [[ -z "$pass1" ]] ; then
  echo "No password is given!" >&2
  exit 3
fi
[[ "$newaname" == "" ]] && newaname="$aname"
if [[ -z "$newaname" ]] ; then
  echo "No archive name is given!" >&2
  exit 4
fi

7z -t7z -p"$pass1" a "$newaname" "$@"

您可以将其副本放在路径中的某个位置(并使其可执行)。我将其用作compress_with_pass.sh脚本的文件名。

该脚本会提示您输入存档文件名(如果要压缩单个文件,它会自动用替换文件的扩展名.7z)和存档密码。

要将此脚本添加为“文件管理器操作”,请使用文件管理器操作配置工具您按照我上面所述进行安装并添加如下操作(此处仅显示重要的字段):

行动标签:

  • ✓ 在选择上下文菜单中显示项目
  • 上下文标签:COMPRESS WITH PASSWORD

命令标签:

  • 小路:gnome-terminal
  • 参数:-- bash -c "compress_with_pass.sh %F ; read a"

执行标签:

  • 执行模式:正常
  • 根据您的需要更改其他字段。

此后,您可以在文件管理器中选择一个或多个文件,然后右键单击以访问名为的操作:COMPRESS WITH PASSWORD

笔记

  • 该脚本可以得到改进,以允许压缩其他格式。
  • 您可以使用亚德用于更高级的脚本输入/输出(GUI)。

针对 Ubuntu 20.10 的更新

由于该filemanager-actions软件包在 Ubuntu 20.10 中不再可用,因此我们必须恢复到Nautilus 脚本我对上述脚本进行了相应修改,并将新版本复制如下:

#!/bin/bash
# See: https://help.ubuntu.com/community/NautilusScriptsHowto

msg ()
{
  zenity --info --no-wrap --no-markup --text="$*"
}

aname=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | head -1)
if [[ $aname != "" ]] ; then
  aname="$(echo "$aname"|sed -e 's/\.[^./]*$//').7z"
fi
answer=$(zenity --forms --title="Create Compressed File" \
 --text="Archive Name: $aname" --add-entry="New Archive Name:" \
 --add-password="Password:" --add-password="Confirm Password:")
case "$?" in
  1)  msg "Cancelled" ; exit 1 ;;
  -1) msg "Error!"    ; exit -1 ;;
  0)  IFS="|" read -r newaname pass1 pass2 <<< "$answer" ;;
esac
if [[ "$pass1" != "$pass2" ]] ; then
  msg "Passwords do no match!"
  exit 2
fi
if [[ -z "$pass1" ]] ; then
  msg "No password is given!"
  exit 3
fi
[[ "$newaname" == "" ]] && newaname="$aname"
if [[ -z "$newaname" ]] ; then
  msg "No archive name is given!"
  exit 4
fi

tmpfile=$(mktemp)
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" >"$tmpfile"
out1=$(echo 7z -t7z -p\""$(echo $pass1|sed 's/./*/g')"\" a \""$newaname"\" -i@"$tmpfile")
out2=$(7z -t7z -p"$pass1" a "$newaname" -i@"$tmpfile" 2>&1)

msg "$out1
___
$out2"

rm "$tmpfile"

您必须将脚本放在~/.local/share/nautilus/scripts具有适当名称的目录下(例如CompressWith_Pass),并使其可执行(chmod +x ~/.local/share/nautilus/scripts/CompressWith_Pass)。

之后,用法类似:您可以在文件管理器中选择一个或多个文件,然后右键单击以访问脚本菜单项具有压缩密码作为子项。

答案2

您可以使用档案管理器添加密码。

相关内容