Script de clique direito do Nautilus para base64

1

Eu gostaria de adicionar nautilus script para clique direito, como converter arquivo selecionado com base64, mas sem sorte. Comando regular no terminal é como:

base64 input.jpg output.txt

Este é o meu script mais próximo para fazer isso;

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

Mas dá o caminho do arquivo como base64. Alguém pode me ajudar sobre isso?

    
por elanozturk 22.01.2017 / 17:45

3 respostas

0

Estou assumindo que você já pode adicionar um script personalizado ao nautilus e só precisa do script correto para fazer o trabalho real, se esse for o caso, tente este script:

#!/bin/bash
# Generating base64 files from nautilus
m=0 # counter
while [ -n "" ] && [ -f "" ] 
do
   echo " " >> output.txt     
   echo "" >> output.txt
   base64 "" >> 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

Por favor, faça o arquivo executável com:

chmod +x /path/to/script

Explicado:

  1. -n "" verifica se os valores são maiores que 0, ou seja, não 0
  2. -f "" verifica se o arquivo existe e é um arquivo regular.
  3. shift move-se pelos argumentos fornecidos
  4. m=$(($m + 1)) adiciona 1 a 0 valor da contagem inicial para acompanhar o número de arquivos que estão sendo convertidos
  5. zenity exibe uma caixa de diálogo para indicar o fim das operações.
por George Udosen 23.01.2017 / 00:14
3

Seu script original tem alguns problemas:

  • "$NAUTILUS_SCRIPT_SELECTED_FILE_Path" deve ser todo maiúscula e grafada de maneira diferente, como em "$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS".
  • echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | base64 codificará apenas a string "$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" e pronto. Se você quiser codificar um arquivo, você precisa passar essa variável via xargs ou, melhor ainda, passá-la diretamente. base64 pode pegar arquivos como argumentos, portanto base64 "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" é o que você realmente quer fazer. Não há tubos aqui, não echo .

Abaixo, forneço uma abordagem alternativa e bastante simplista

Script

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

Instruções

  • Coloque este arquivo no diretório ~/.local/share/nautilus/scripts/
  • certifique-se de que ele seja executável com o comando chmod +x <path to script here> .
  • Selecione os arquivos que você deseja, clique com o botão direito e vá para o submenu de scripts. Selecione seu script.
  • Quando o script estiver pronto, cada arquivo codificado em base64 será colocado em sua pasta pessoal, com o nome do arquivo original e a extensão .base64 . Você pode querer alterar o script para criar .base64 arquivos no mesmo diretório, o que é totalmente aceitável, mas pode ser um problema se você não tiver permissão para criar arquivos nesse diretório.

    É claro que esse script é um pouco simplista. Eu criei um pouco mais de script em Python3, que você pode encontrar no meu repositório do GitHub para scripts do nautilus. Ele faz um pouco mais que os outros scripts - verifica o tipo de arquivo, mostra informações e popups de erro, etc.

por Sergiy Kolodyazhnyy 23.01.2017 / 00:37
0

Obrigado por todos os caras, fiz dois roteiros com sua ajuda e sugestões para codificar e decodificar.

Codificar:

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

Decodificar:

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

done
    
por elanozturk 23.01.2017 / 20:48