我正在尝试将随身碟中存在的各种文件移动到 PC 上各自的文件夹中。即,音乐文件放入音乐文件夹,文本文件放入文档等等。我已经为此编写了一个脚本,当我通过输入 ./cpphone.sh 执行时,它工作正常(所有文件都被移动到各自的文件夹中)但是当我使用 udev 规则时,脚本无法正确执行(没有文件被移动到其文件夹中),但是回显被存储到文件 testlog.txt 中。所以脚本正在执行但文件没有被移动。为什么会这样呢?脚本归 root 所有。
我的 Udev 规则是 ACTION=="add", RUN+="/lib/udev/cpphone.sh"
我的脚本是
#!/bin/bash
echo Hello > /home/ArunReddy/testlog.txt
exec 1>/dev/null 2>&1
DIR=$(date +%d-%m-%y)
if [ ! -d /home/ArunReddy/Pictures/"$DIR" ];
then
cd /home/ArunReddy/Pictures/
mkdir $DIR
fi
if [ ! -d /home/ArunReddy/Pictures/"$DIR" ];
then
cd /home/ArunReddy/Documents/
mkdir $DIR
fi
if [ ! -d /home/ArunReddy/Videos/"$DIR" ];
then
cd /home/ArunReddy/Videos/
mkdir $DIR
fi
if [ ! -d /home/ArunReddy/Music/"$DIR" ];
then
cd /home/ArunReddy/Music/
mkdir $DIR
fi
cd /run/media/ArunReddy/121C-E137
mv *.png /home/ArunReddy/Pictures/$DIR/
echo pngfilecmd executed>/home/ArunReddy/testlog.txt
mv *.jpg /home/ArunReddy/Pictures/$DIR/
mv *.bmp /home/ArunReddy/Pictures/$DIR/
mv *.txt /home/ArunReddy/Documents/$DIR/
mv *.odt /home/ArunReddy/Documents/$DIR/
mv *.doc /home/ArunReddy/Documents/$DIR/
mv *.pptx /home/ArunReddy/Documents/$DIR/
mv *.pdf /home/ArunReddy/Documents/$DIR/
mv *.ppt /home/ArunReddy/Documents/$DIR/
mv *.docx /home/ArunReddy/Documents/$DIR/
mv *.avi /home/ArunReddy/Videos/$DIR/
mv *.flv /home/ArunReddy/Videos/$DIR/
mv *.MP4 /home/ArunReddy/Videos/$DIR/
mv *.mpeg /home/ArunReddy/Videos/$DIR/
mv *.MP3 /home/ArunReddy/Music/$DIR/
exit
答案1
也许执行这些脚本的 udev 环境没有定义 PATH。尝试使用 、 等命令的cd
完整mkdir
路径cp
。您可以使用which cd
shell 中的命令来查找路径。