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 - 来源
- 查看我的 post 博客,我在其中实际意识到类似的事情:https://gabrieleserra.ml/blog/2021-08-14-filemanager-actions-ubuntu-20-04.html
- 对 FileManager 操作的所有可能格式的引用:https://askubuntu.com/a/783313/940068
- 在Ubuntu18.04实现:https://askubuntu.com/a/77285/940068
我有一个非常简单的 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 - 来源
- 查看我的 post 博客,我在其中实际意识到类似的事情:https://gabrieleserra.ml/blog/2021-08-14-filemanager-actions-ubuntu-20-04.html
- 对 FileManager 操作的所有可能格式的引用:https://askubuntu.com/a/783313/940068
- 在Ubuntu18.04实现:https://askubuntu.com/a/77285/940068