Nemo 自定义操作(.sh 脚本)无法执行

Nemo 自定义操作(.sh 脚本)无法执行

我创建了一个 .sh 脚本,用于对我使用 Shutter 制作的屏幕截图进行简单的 OCR 处理。该脚本如下所示 ( ocrFile.sh):

#!/bin/bash

convert $1 /tmp/output.pnm
cat /tmp/output.pnm | pamstretch 4 > /tmp/stretched.pnm
convert /tmp/stretched.pnm -colorspace gray /tmp/output600dpi.tif
tesseract /tmp/output600dpi.tif ./outputText -l eng

此脚本执行使用 tesseract 进行 OCR 时所需的一些图像增强。如果从终端调用,它可以正确完成工作。我想要在 Nemo 中完成整个过程,因此我创建了一个名为OCR.nemo_actioninside 的自定义操作/home/user1/.local/share/nemo/actions,其内容如下:

[Nemo Action]
Name=OCR The Screenshoot
Comment=OCR Function for Nemo File Manager
Exec=<ocrFile.sh %F>
Icon-Name=gtk-execute
Selection=Any
Extensions=png;

此 Nemo 操作不会使用上面给出的脚本产生输出。.sh 脚本也位于 Nemo 自定义操作的文件夹中。

请帮忙!

答案1

伟大的!!

-- ~/OCR.sh(chmod +x ~/OCR.sh)

#!/bin/bash
convert $1 /tmp/OCR-output.pnm
cat /tmp/OCR-output.pnm | pamstretch 4 > /tmp/OCR-stretched.pnm
convert /tmp/OCR-stretched.pnm -colorspace gray /tmp/OCR-output600dpi.tif 
tesseract /tmp/OCR-output600dpi.tif ~/Desktop/OCR-outputText -l eng 
rm /tmp/OCR-output.pnm /tmp/OCR-stretched.pnm /tmp/OCR-output600dpi.tif

– ~/.local/share/nemo/actions

[Nemo Action]
Active=true
Name=OCR picture
Comment=OCR Function for Nemo File Manager
Selection=S
Exec=/bin/bash /home/user/OCR.sh %F                 --- change "user"
Icon-Name=gtk-execute
Extensions=png;jpg;jpeg;bmp;

并且 OCR 文本就在我的桌面上!!!

答案2

我在 Cinnamon 中找到了解决此问题的方法。该.nemo_action文件包含以下内容。

[Nemo Action]
Name=OCR The Screenshoot
Comment=OCR Function for Nemo File Manager
Selection=S
Exec=gnome-terminal --working-directory=%P -e "/media/storage/Scripts/actions/ocrFile.sh %F"
Icon-Name=gtk-execute
Extensions=png;jpg;jpeg;bmp;
Active=true

使用终端启动来完成这项工作在这里是一种变通方法。其他一切似乎都没有产生结果。

bash 脚本本身基本保持不变,仅改变了一条指令,即保持终端打开直到执行命令集。

#!/bin/bash
convert $1 /tmp/output.pnm
cat /tmp/output.pnm | pamstretch 4 > /tmp/stretched.pnm
convert /tmp/stretched.pnm -colorspace gray /tmp/output600dpi.tif 
tesseract /tmp/output600dpi.tif ./outputText -l eng 
rm /tmp/output.pnm /tmp/stretched.pnm /tmp/output600dpi.tif
bash

我最终渴望的是让这个过程完全脱离终端。在我看来,这个过程与 Gnome2 (Mate) 略有不同。这里是包含以下内容的 bash 脚本终端命令不要在“后台某处”执行。对于调用 GUI 应用程序的 bash 脚本,Gnome3 的Exec=指令允许该<script.sh %F>值。

答案3

这是 bash 脚本吗?试试

Exec=/bin/bash /home/user1/.local/share/nemo/actionsocrFile.sh %F

(或者甚至/bin/sh通常dash可能会稍微快一些。)

至于调试,在命令行:

$ nemo -q # quit all instances of nemo
$ NEMO_ACTION_VERBOSE=1 nemo

然后从打开的 nemo 窗口运行操作。

相关内容