linux - 需要帮助来创建简单的 bash 脚本

标签 linux bash unix terminal sh

我创建了这个 bash 文件,并在其中添加了我经常运行的一系列命令,用于同步数码相机中的文件。重点是它没有任何作用!我错过了什么?
谢谢!
代码:

#!/bin/bash
#temporal
mkdir /tmp/canon

#copy files from camera
rsync -r /run/user/mango/gvfs/g*/DCIM /tmp/canon
cd /tmp/canon

#get files from subdirs
find ./ -name '*.JPG' -exec mv '{}' ./ \;

#remove dirs
ls -l | awk -F'[0-9][0-9]:[0-9][0-9]' '/^d/{print $NF}'| xargs -i rm -rf '{}' \;

#recreate folder structure with year|month pattern
jhead -n%Y/%m/%f *.JPG

#Sync with external HD
rsync -r --ignore-existing . /media/mango/WD/FOTOS/

最佳答案

如果它甚至不执行 mkdir,那么听起来很可能您想要的脚本版本不是正在运行的版本。尝试使用限定路径,例如 ./myscript 或绝对路径,例如 /home/joe/bin/myscript。命令 type myscript 将告诉 shell 从哪里运行它。

此外,尝试在脚本顶部添加 set -x 或使用 bash -x myscript 后运行脚本;这将显示执行时的每一行。

如果这仍然没有帮助,则可能有 bash 启动代码,例如在 .bashrc 中。虽然可以使用相同的 set -x 来诊断,但要非常小心,除非第二个用户可以登录并编辑该用户的启动脚本,因为启动脚本中的错误可能会导致无法登录系统。

关于linux - 需要帮助来创建简单的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451323/

相关文章:

bash - 如何在 bash 中的 grep 中指定命令行参数?

c - 如何在 CTRL-C 之前保持输入

linux - 在某些模式之前添加文本时将 sed 与忽略大小写一起使用

linux - Fail2Ban 多次尝试后仍无法阻止 ip

python - 如何在不使用堆栈或队列的情况下编写自己的 Python 堆栈推送和弹出函数?

linux - 子类型和 mDNSResponder

linux - 如何使用 shell 在 Linux 中删除超过 7 天的文件

swift - 尝试在 Swift 中运行简单的 Bash 命令 - 'Couldn' t posix_spawn : error 13'

linux - 如何使用正则表达式判断一个文件是否包含ISBN系列?

linux - 覆盖库文件导致段错误