Правильный скрипт Nautilus для base64

Я хотел бы добавить скрипт nautilus для правого клика, например, преобразовать выбранный файл с base64, но не повезло. Регласная команда в терминале похожа:

base64 input.jpg output.txt

Это мой самый близкий сценарий для этого;

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

Но он дает путь к файлу как base64. Может ли кто-нибудь помочь мне в этом?

1
задан 22 January 2017 в 20:45

2 ответа

В вашем исходном скрипте есть несколько проблем:

"$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.

Ниже я предоставляю альтернативный и довольно упрощенный подход

Script

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

Инструкции

"$NAUTILUS_SCRIPT_SELECTED_FILE_Path" должны быть все как и в «$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS». гарантирует, что он выполним команду chmod +x <path to script here>. echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | base64 будет только кодировать строку «$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS» и все. Если вы хотите закодировать файл, вам нужно передать эту переменную через xargs или еще лучше - передать его напрямую. base64 может принимать файлы как аргументы, таким образом base64 "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" - это то, что вы действительно хотите сделать. Нет труб здесь, нет echo. Как только скрипт будет выполнен, каждый файл с кодировкой base64 будет помещен в вашу домашнюю папку с оригинальным именем файла и расширением .base64. Вы можете изменить скрипт для создания файлов .base64 в том же каталоге, что совершенно нормально, но может быть проблемой, если у вас нет разрешения на создание файлов в этом каталоге. Конечно, этот скрипт немного упрощен. Я создал несколько более сложный скрипт в Python3, который вы можете найти в моем репозитории GitHub для сценариев nautilus. Это немного больше, чем другие скрипты - проверяет тип файла, показывает информацию и всплывающие окна с ошибками и т. Д.
3
ответ дан 23 May 2018 в 02:10
  • 1
    Спасибо, я очень благодарен, это именно то, что я искал. – elanozturk 23 January 2017 в 22:26
  • 2
    @elanozturk Добро пожаловать, и спасибо за хороший вопрос! – Sergiy Kolodyazhnyy 23 January 2017 в 22:28

Спасибо за всех ребят, я сделал два сценария с вашей помощью и предложения для кодирования и декодирования.

Encode:

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

Encode: [!d2 ]

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

done
0
ответ дан 23 May 2018 в 02:10

Другие вопросы по тегам:

Похожие вопросы: