Nautilus 右键单击​​ base64 脚本

Nautilus 右键单击​​ base64 脚本

我想添加用于右键单击的 nautilus 脚本,例如使用 base64 转换选定的文件,但没有成功。终端中的常规命令如下:

base64 input.jpg output.txt

这是我最接近的脚本;

#!/bin/sh
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_Path" | base64 > Base64

但是它将文件路径显示为 base64。有人能帮我解决这个问题吗?

答案1

您的原始脚本有几个问题:

  • "$NAUTILUS_SCRIPT_SELECTED_FILE_Path"应该全部大写并且拼写不同,例如“$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS”。
  • echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | base64只会对字符串“$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS”进行编码,仅此而已。如果要对文件进行编码,则需要通过传递该变量,xargs或者更好的方法是直接传递。base64可以将文件作为参数,因此这才base64 "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"是您真正想要做的。这里没有管道,没有echo

下面我提供另一种相当简单的方法

脚本

#!/bin/bash
for item in "$@"
do
   file=$(basename "$item" )
   base64 "$item" > "$HOME/$file.base64"
done

指示

  • 将此文件放入~/.local/share/nautilus/scripts/目录中

  • 确保它可以通过chmod +x <path to script here>命令执行。

  • 选择您想要的文件,右键单击,然后转到脚本子菜单。选择您的脚本。

  • 脚本完成后,每个 base64 编码文件都将放入您的主文件夹中,并带有原始文件名和.base64扩展名。您可能希望修改脚本以.base64在同一目录中创建文件,这完全没问题,但如果您没有权限在该目录中创建文件,则可能会出现问题。

    当然,这个脚本有点简单。我在 Python3 中创建了一个更复杂的脚本,你可以在我的GitHub 存储库用于 nautilus 脚本。它比其他脚本的功能多一点 - 检查文件类型、显示信息和错误弹出窗口等。

答案2

我假设您已经可以向 nautilus 添加自定义脚本,并且只需要正确的脚本来完成实际工作,如果是这种情况,请尝试此脚本:

#!/bin/bash
# Generating base64 files from nautilus
m=0 # counter
while [ -n "$1" ] && [ -f "$1" ] 
do
   echo " " >> output.txt     
   echo "$1" >> output.txt
   base64 "$1" >> output.txt
   echo " " >> output.txt
   m=$(($M + 1))
   shift
   echo " " >> output.txt           
done
zenity --info --text="Operations finished and "$m" file(s) encoded"
exit 0

请使用以下命令使文件可执行:

chmod +x /path/to/script

解释:

  1. -n "$1"检查值是否大于 0,即不为 ​​0
  2. -f "$1"检查文件是否存在且是否为常规文件。
  3. shift遍历给定的参数
  4. m=$(($m + 1))添加初始计数值以1跟踪0正在转换的文件数量
  5. zenity显示一个对话框指示操作结束。

答案3

谢谢大家,我在你们的帮助和建议下编写了两个编码和解码脚本。

编码:

#!/bin/bash
for item in "$@"
do
   mkdir /yourpath/encode
   file=$(basename "$item" )
   base64 "$item" > "/yourpath/encode/$file-base64"
done

解码:

for item in "$@"
do
   mkdir /yourpath/decode
   file=$(basename "$item" )
   name=`echo $file | cut -f1 -d'-'`
   base64 -d "$item" > "/yourpath/decode/$name"

done

相关内容