AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 874971
Accepted
elanozturk
elanozturk
Asked: 2017-01-23 08:45:03 +0800 CST2017-01-23 08:45:03 +0800 CST 2017-01-23 08:45:03 +0800 CST

适用于 base64 的 Nautilus 右键单击​​脚本

  • 772

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

base64 input.jpg output.txt

这是我最接近的脚本;

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

但它给出了文件的路径为base64。有人可以帮我解决这个问题吗?

command-line
  • 3 3 个回答
  • 286 Views

3 个回答

  • Voted
  1. Sergiy Kolodyazhnyy
    2017-01-23T15:37:58+08:002017-01-23T15:37:58+08:00

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

    • "$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 脚本的内容。它比其他脚本做得更多——检查文件类型、显示信息和错误弹出窗口等。

    • 3
  2. Best Answer
    George Udosen
    2017-01-23T15:14:42+08:002017-01-23T15:14:42+08:00

    我假设您已经可以将自定义脚本添加到 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显示一个对话框以指示操作结束。
    • 0
  3. elanozturk
    2017-01-24T11:48:24+08:002017-01-24T11:48:24+08:00

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

    编码:

    #!/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
    
    • 0

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve