Ich habe 1 Skript erstellt, um benutzerdefinierte Dateien in den Mülleimer zu verschieben und eine Protokolldatei mit ihren ursprünglichen Pfaden erstellen. Jetzt möchte ich ein Skript erstellen, bei dem der Benutzer nur den Namen der Datei eingeben muss, um ihn an der Stelle wiederherzustellen, an der er zuvor war, und das kann ich nicht herausfinden. Hier ist der Code so weit:Wiederherstellen einer Datei an ihren ursprünglichen Speicherort aus einer Protokolldatei mit Pfaden
löschen Skript:
#!/bin/sh
#checks if the user has entered anything.
#if not displays message.
if [ $# -eq 0 ]; then #reads the number of characters
echo "Usage: del <pathname>" >&2
exit 2;
fi
#location of the dustbin
dustbin="$HOME/dustbin"
paths="$HOME/Paths"
if [[ ! -d $dustbin ]]; then #checks if the dustbin exists
mkdir $dustbin
else
[[ -p $dustbin ]] #if dustbin exists does nothing
fi
#creates a Paths folder to store the original location of file(s)
if [[ ! -d $paths ]]; then #checks if the Paths folder exists
mkdir $paths
else
[[ -p $paths ]] #if Paths folder exists does nothing
fi
#gets just the file name
for file in "[email protected]"; do #reads all the arguments
if [[ -e $file ]]; then #checks if the file name exists
#moves the file(s) to the dustbin and writes the orginal file path to the paths.txt file.
find $file >> $HOME/Paths/paths.txt && mv "$file" "$dustbin"
echo "Deleting file(s) $file"
else
echo "The file $file doesn't exist."
fi
done
wiederherstellen Skript: Damit muss ich für die Datei in die Mülltonne suchen, auf den Pfaden Textdatei mit dem Dateinamen übereinstimmen, hat die Dateien ursprünglichen Pfad und bewegen Sie sich zu dem genannten Pfad.
#!/bin/sh
#checks if the user has entered anything.
#if not displays message.
if [ $# -eq 0 ]; then
echo "Usage: restore <File name>" >&2
exit 2;
fi
#checks if the file paths.txt exist
paths="$HOME/Paths/paths.txt"
if [[ ! -f $paths ]]; then #checks if the Paths file exists
echo "The log file paths.txt doesn't exist. Nothing to restore"
fi
#takes the user input checks if the dustbin exists.
for file in "[email protected]"; do
if [[ ! -d dustbin ]]; then
echo "dustbin doesn't exist"
else
cd $HOME/dustbin
fi
#looks for the user specified file.
if [[ ! -e $file ]]; then
echo "File $file doesn't exist"
else
#restores the file to the original location
restore="grep -n '$file' $paths" #no idea how to do it
mv $file $restore
fi
done
dieser Teil habe ich keine Ahnung, wie zu tun ist. Ich brauche es, um die Benutzereingaben in $ file aus der paths.txt zu lesen und den gespeicherten Pfad zu verwenden, um die $ -Datei aus dem Mülleimer in den Dateipfad zu verschieben, der in der Datei paths.txt gespeichert ist.
#restores the file to the original location
restore="grep -n '$file' $paths" #no idea how to do it
mv $file $restore
Diese Frage ist ein guter Anfang hinzugefügt, aber unvollständig . Bitte lesen Sie [MCVE] (http://stackoverflow.com/help/mcve). Wo genau stecken Sie fest oder was erzeugt Fehler, die Sie nicht verstehen? – ghoti
Außerdem haben Sie Ihre Frage ** [tag: bash] ** markiert, aber Ihr Skript beginnt mit '#!/Bin/sh', was bedeutet, dass Sie entweder eine Nicht-Bash-Shell ausführen, oder Sie sind Bash im Kompatibilitätsmodus ausführen. Aktualisieren Sie entweder Ihren Shebang oder Ihr Skript (und die Tags) entsprechend. – ghoti
yeah Entschuldigung, das Bash-Tag wurde entfernt – darumpa