我想添加用于右键单击的 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
解释:
-n "$1"
检查值是否大于 0,即不为 0-f "$1"
检查文件是否存在且是否为常规文件。shift
遍历给定的参数m=$(($m + 1))
添加初始计数值以1
跟踪0
正在转换的文件数量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