Ich versuche, ein grundlegendes Papierkorb-Konzept in einer VM mithilfe von Bash-Skripts zu erstellen. Es muss die eingegebenen Dateien löschen und in ein erstelltes Verzeichnis stellen und den Pfad (Ursprung) in eine Protokolldatei speichern, um später in einer Wiederherstellungsfunktion verwendet zu werden.Papierkorb in Bash-Skript
werde ich mit meinem Lösch-/recycle Code beginnen, die ich funktioniert gut glauben, aber irgendwie unsauber scheint/enthält redundante Code:
#!/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
Danach, was ich habe für meine wiederherstellen Skript ist wie folgt:
#!/bin/sh
cd "$HOME/recycle/recycle_bin" || exit 1
mv -i "$(grep "$1" "$HOME/recycle/recycle_log")"
ich stelle mir das etwas in der Nähe zu dem, was ich brauche jede gelöschte Datei im Protokoll/Papierkorb gespeichert zurückkehren zu ihrem Ursprung wieder hergestellt werden, aber der Fehler ich erhalte ist:
mv: missing destination file operand after `'
Irgendwelche Gedanken darüber, wo ich falsch liege?
Sie nur geben 'mv' ein Argument zu entfernen. Vielleicht war Ihr Denken 'mv -i" $ 1 "" $ (grep "$ 1" "$ HOME/recycle/recycle_log") "', um die Datei in ihren Protokolleintrag zu verschieben. –
@thatotherguy anderer Typ Das ändert den Fehler in 'mv: kann 'example.txt' nicht in ': Keine solche Datei oder Verzeichnis verschieben' –
Ich habe nicht bemerkt, dass Sie Ihr Protokoll in' $ HOME/recycle/recycle_log/log_file schreiben 'aber bitte deinen grep, aus' $ HOME/recycle/recycle_log' zu lesen. Sie können 'mv -i" $ 1 "" $ (grep "$ 1" "$ HOME/recycle/recycle_log/log_file") "' verwenden, um das zu beheben –