我将其发布在 raspberrypi.stackexchange 上,但被定向到此处。我是 Linux / Unix 的新手,我正在尝试获取一个与gphoto2
.
gphoto2 --capture-tethered --hook-script=myhookscript.sh \
--filename="/home/media/usbpendrive/image-%Y%m%d-%H%M%S.jpg" \
--force-overwrite
这应该将图像下载到我的 USB 笔驱动器,然后在 hookscript 中查找新命令。
下一阶段将使用qiv
类似的图像查看器来查找文件夹中的最后一个捕获,然后全屏显示它。我希望有人用简单的术语解释如何制作这个钩子脚本。
答案1
Gphoto 将$ACTION
和传递$ARGUMENT
给钩子脚本,您可以使用它。
举个例子:-
#!/bin/bash
if [ $ARGUMENT ]; then
if [[ $ARGUMENT =~ .+\.[jpg|JPG] ]]
then
# Then next few lines are optional
# Alternatively pass $ARGUMENT directly to your image viewer eg:-
# /usr/bin/shotwell "$ARGUMENT" &
DIRNAME=$(dirname "$ARGUMENT")
BASENAME=$(basename "$ARGUMENT")
NEWFILENAME="$DIRNAME/my_new_folder/$BASENAME"
mv "$ARGUMENT" "$NEWFILENAME"
/usr/bin/shotwell "$NEWFILENAME" &
fi
fi
这会在 中打开文件shotwell
,但可以轻松更改为您首选的查看器。
第二条if
语句确保仅当下载的文件是 JPG 时才使用 shotwell,因为有时我将相机设置为创建 raw(佳能上的 CR2),但无法在 shotwell 中打开。我想它可以扩展到与其他观众打开那些。
--filename
该图像将被保存为提供给- 在您的情况下的参数/home/media/usbpendrive/image-20140616-125500.jpg
。这将是存储在钩子脚本中$ARGUMENT
并传递给钩子脚本的值。
您可以使用dirname
和basename
将此路径和文件名拆分为相关部分,然后重新使用它们为图像创建新的路径和文件名。
$dirname /home/media/usbpendrive/image-20140616-125500.jpg
/home/media/usbpendrive
$basename /home/media/usbpendrive/image-20140616-125500.jpg
image-20140616-125500.jpg
$ARGUMENT
仅在下载图像时可用gphoto
,因此在这种情况下检查$ACTION
将是多余的。
当然,该文件需要设置其可执行位。
当我发现时我才停止使用这个绞但我不确定 Pi 上是否可用。