我有一个 Nautilus 脚本,我想修改它,以便它使用多个选定的文件作为输入来执行单个操作。有人可以解释一下如何实现这一目标吗?
我尝试过command $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
,脚本的作用是执行 command file1
,然后command file2
作为两个离散的操作。这不适用于我的用例,而是我需要执行脚本command file1 file2
。
align_image_stack
如果重要的话,我将它与需要 2 个或更多图像文件作为输入的命令一起使用。我从终端启动 Nautilus 以查看错误消息,然后我得到“align_image_stack:至少需要指定两个文件”。我测试了如下所示的一些命令,但所有命令都产生相同的错误消息。我认为问题是变量$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
产生换行符,但我不知道如何捕获选定的文件路径。
align_image_stack "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
align_image_stack $(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
align_image_stack printf("$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | xargs -I align_image_stack "{}"
答案1
我从来没能开始$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
工作,但这是有效的:
command $(echo -n "$@")
我相信这称为命令替换,“$@”字符将所有选定的文件作为输入一起插入命令中,并在 echo 列出它们后使用 -n 参数抑制换行符。
如果您需要将一组括号内的照片对齐并融合在一起,可以使用以下 Nautilus 脚本,该脚本现已经过测试且运行良好。它将成品输出到您的桌面(文件名是当前时间)并在执行以下操作后清除所有临时文件:
#!/bin/bash
align_image_stack -a BATCH -C $(echo -n "$@") && enfuse -o ~/Desktop/$(date '+%Y-%m-%d-%T').tif BATCH*.tif && rm BATCH*.tif