J'essaie de créer un concept de corbeille de base dans une machine virtuelle en utilisant bash scripting. Il devra supprimer les fichiers qui ont été entrés et les placer dans un répertoire créé et enregistrer le chemin (origine) dans un fichier journal qui sera utilisé ultérieurement dans une fonction de restauration.Corbeille dans le script Bash
Je vais commencer avec mon code de suppression/de recyclage que je crois fonctionne très bien, mais semble un peu en désordre/contient un code redondant:
#!/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
Par la suite ce que j'ai pour mon script de restauration est la suivante:
#!/bin/sh
cd "$HOME/recycle/recycle_bin" || exit 1
mv -i "$(grep "$1" "$HOME/recycle/recycle_log")"
J'imagine que cela est un peu proche de ce que je dois retourner tout fichier supprimé stocké dans le bac journal/recyclage à restaurer à son origine, mais l'erreur que je reçois est:
mv: missing destination file operand after `'
Des pensées sur où je vais mal?
ne vous donne 'mv' un argument. Peut-être votre pensée était 'mv -i" $ 1 "" $ (grep "$ 1" "$ HOME/recycle/recycle_log") "' pour déplacer le fichier dans son entrée de journal. –
@thatotherguy autre gars Cela change l'erreur à 'mv: impossible de déplacer 'example.txt' à ': Aucun fichier ou répertoire' –
Je n'ai pas remarqué que vous écrivez votre journal dans' $ HOME/recycle/recycle_log/log_file 'mais demandez à votre grep de lire' $ HOME/recycle/recycle_log'. Vous pouvez utiliser 'mv -i" $ 1 "" $ (grep "$ 1" "$ HOME/recycle/recycle_log/log_file") "' pour corriger cela –