bash 脚本中右键单击的项目(例如,jpg)的变量?

Variable for a right-clicked item (say, a jpg) in a bash script?

我有一个非常简单的 bash 脚本,我 运行 经常使用 cli,但我发现必须打开终端、识别正确的文件,然后 运行 它并认为最简单的方法是 运行 它作为右键单击的选项。我是 运行ning Ubuntu 18.04 LTS。

脚本只是擦除 exif 数据,留下方向标签,本质上是这样的:

exiftool -all= -tagsfromfile @ -Orientation file-*.jpg

有没有办法让脚本识别我右击的是哪张图片?我不知道该在 file-*.jpg 部分中放入什么,这将是 "whatever image I'm right-clicking on right now."

的变量

尝试搜索了很长时间以了解如何执行此操作,但显然我没有使用正确的搜索词,或者这不是经常执行的操作。预先感谢您的帮助!

如果您希望您的脚本在文件管理器右键单击菜单中 运行,您必须更改您的脚本并将文件定义为参数。这只需将 </code> 的文件部分更改为 <code>$n 作为参数即可发生。

据我所知ubuntu 使用 nautilus 作为文件管理器。 您可以从您的终端或从破折号 运行 nautilus-actions-config-tool 并为您的脚本定义一个名称和一个命令 运行。你可以按照这个link进行插图学习: ubuntu nautilus defile script in menu

例如:

#!/bin/bash

if [ "" != "" ]; then
    echo "Positional parameter 1 contains value "
else
    echo "Positional parameter 1 is empty"
fi

对于所有参数:

#!/bin/bash

if [[ "$#" -gt 0 ]]; then

  for arg in "$@"; do

    echo $arg

  done

fi

here is the image that shows the script worked

我知道这个问题有点老了,但我可以为您提供解决方案。

您必须设置 FileManager-actions,GNOME/Nautilus 的扩展(但它也适用于其他文件管理器)。

在 Ubuntu 20.04

上设置文件管理器操作
sudo apt update
sudo apt install filemanager-actions

然后 运行 fma-config-tool 并创建一个新动作。

创建动作时,请确保:

  • [v] 在选择上下文菜单中显示项目

被标记;否则,您在选择文件时将看不到上下文菜单。

准备要执行的脚本

准备一个脚本来满足您的需求。在/tmp中触摸它,在/usr/bin中触摸mv并赋予它执行权限:

touch /tmp/your-script
# edit it with your editor
sudo mv /tmp/your-script /usr/bin/
sudo chmod +x /usr/bin/your-script

在您的脚本中,您可以使用 </code> 引用文件名。</p> <pre><code>FILENAME= echo $FILENAME

在变量 FILENAME 中,您将找到所选的文件名。

配置 Nautilus-action 命令

要让 nautilus 传递文件名,请在“命令”选项卡中插入脚本路径和参数字符串。

要完整回答您的问题,要让 Nautilus 将文件名作为脚本参数传递,您必须指定 %f.

此时退出Nautilus实例再打开:

nautilus -q
nautilus

现在,让我们来试试吧!右键单击文件并查看结果!

附录 1 - 文件管理器操作格式

  • %f 单个文件名,即使选择了多个文件也是如此。
  • %F 文件列表。每个文件都作为单独的参数传递给可执行程序。
  • %u单URL。本地文件可以作为文件传递:URLs 或作为文件路径。
  • %U URL 的列表。每个 URL 作为单独的参数传递给可执行程序。
  • %d 基本目录

Here 你可以找到一个完整的列表。

附录 2 - 来源