Наутилус правой кнопкой мыши скрипт для base64
Я хотел бы добавить скрипт nautilus для правого клика, как конвертировать выбранный файл с base64, но не повезло. Регулярная команда в терминале выглядит так:
base64 input.jpg output.txt
Это мой ближайший сценарий для этого;
#!/bin/sh
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_Path" | base64 > Base64
Но это дает путь к файлу как base64. Кто-нибудь может мне помочь по этому поводу?
3 ответа
Я предполагаю, что вы уже можете добавить собственный скрипт в 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
отображает диалоговое окно с указанием конца операции.
Ваш оригинальный скрипт имеет несколько проблем:
"$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. Он делает немного больше, чем другие скрипты - проверяет тип файла, показывает информацию и всплывающие окна с ошибками и т. Д.
Спасибо всем, ребята, я сделал два сценария с вашей помощью и предложения для кодирования и декодирования.
Encode:
#!/bin/bash
for item in "$@"
do
mkdir /yourpath/encode
file=$(basename "$item" )
base64 "$item" > "/yourpath/encode/$file-base64"
done
Decode:
for item in "$@"
do
mkdir /yourpath/decode
file=$(basename "$item" )
name=`echo $file | cut -f1 -d'-'`
base64 -d "$item" > "/yourpath/decode/$name"
done