我在周末期间决定试用zsh,并对它有一点乐趣。不幸的是,我一般都是shell脚本的新手。
我有一个文件夹,文件名是一个没有文件扩展名的哈希值(4667e85581f80b6936f8811f0a7493c70eae4ee7)。
我想要做的是将此文件复制到另一个文件夹并将其重命名为“screensaver.png”。
我尝试过使用以下代码:
#!/usr/bin/zsh
KUVVA_CACHE="$HOME/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva"
DEST_FOLDER="/Library/Desktop Pictures/Kuvva/$USERNAME/screensaver.png"
for wallpaper in ${KUVVA_CACHE}; do
cp -f ${wallpaper} ${DEST_FOLDER}
done
这会返回以下错误:
cp: /Users/Morten/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva is a directory (not copied).
当我尝试回显$ wallpaper变量而不是做“cp”时,它只是回显文件夹路径。
文件名每6小时更改一次,这就是我正在进行for循环的原因。所以我永远不知道该文件的名称是什么,但我知道该文件夹中始终只有一个文件。
我有什么想法可以做到这一点? :)
非常感谢!
答案 0 :(得分:1)
它应该使用常规文件名扩展(globbing)。
KUVVA_CACHE="$HOME/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva/"
然后复制
cp -f ${KUVVA_CACHE}/* ${DEST_FOLDER}
您可以将脚本添加到crontab,以便以一定的时间间隔运行。使用'crontab -e'编辑并添加
30 */3 * * * /location/of/your/script
这将每隔三小时运行一次。第一个数字是分钟。星号表示任何。按转义键退出编辑器,然后按+:键入wq并按Enter键。这些vi命令。
不要忘记'chmod 0755 file-name'脚本,使其成为可执行文件。
这是脚本。
#!/bin/zsh
KUVVA_CACHE="$HOME/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva"
DEST_FOLDER="/Library/Desktop Pictures/Kuvva/$USERNAME/screensaver.png"
cp "${KUVVA_CACHE}/"* "${DEST_FOLDER}"