Я пытаюсь создать базовую концепцию корзины в виртуальной машине с помощью сценариев bash. Потребуется удалить введенные файлы и поместить их в созданный каталог, а затем сохранить путь (источник) в файл журнала для последующего использования в функции восстановления.
Я начну со своего кода удаления / повторного использования, который, как я считаю, работает нормально, но кажется неаккуратным / содержит избыточный код:
#!/bin/sh
if [ ! -d ~/recycle ]
then mkdir ~/recycle
fi
if [ ! -d ~/recycle/recycle_log ]
then mkdir ~/recycle/recycle_log
fi
if [ ! -d ~/recycle/recycle_bin ]
then mkdir ~/recycle/recycle_bin
fi
if [ -d ~/recycle ]
then
echo "$(readlink -f "$1")" >> "$HOME/recycle/recycle_log/log_file" && mv "$1" "$HOME/recycle/recycle_bin"
echo "$(readlink -f "$2")" >> "$HOME/recycle/recycle_log/log_file" && mv "$2" "$HOME/recycle/recycle_bin"
echo "$(readlink -f "$3")" >> "$HOME/recycle/recycle_log/log_file" && mv "$3" "$HOME/recycle/recycle_bin"
echo "$(readlink -f "$4")" >> "$HOME/recycle/recycle_log/log_file" && mv "$4" "$HOME/recycle/recycle_bin"
fi
#end
После этого у меня есть следующий сценарий восстановления:
#!/bin/sh
cd "$HOME/recycle/recycle_bin" || exit 1
mv -i "$(grep "$1" "$HOME/recycle/recycle_log")"
Я полагаю, что это несколько близко к тому, что мне нужно для возврата любого удаленного файла, хранящегося в журнале / корзине, для восстановления его источника, но я получаю следующую ошибку:
mv: missing destination file operand after `'
Есть мысли о том, где я ошибаюсь?
mv
один аргумент. Возможно, вы думалиmv -i "$1" "$(grep "$1" "$HOME/recycle/recycle_log")"
переместить файл в соответствующую запись журнала. - person that other guy   schedule 29.11.2016mv: cannot move 'example.txt' to ': No such file or directory
- person   schedule 29.11.2016$HOME/recycle/recycle_log/log_file
, но просите grep читать из$HOME/recycle/recycle_log
. Вы можете использоватьmv -i "$1" "$(grep "$1" "$HOME/recycle/recycle_log/log_file")"
, чтобы исправить это - person that other guy   schedule 29.11.2016mv --backup=numbered
- person that other guy   schedule 29.11.2016