Einführung
In diesem Projekt lernst du, wie du einen benutzerdefinierten rm-Befehl erstellst, der gelöschte Dateien in ein Papierkorbverzeichnis verschiebt, anstatt sie permanent zu löschen. Dies ist eine nützliche Funktion für deinen Linux-Server, um versehentliches Löschen von wichtigen Dateien zu vermeiden.
👀 Vorschau
labex:project/ $ ll /tmp/trash
gesamt 2,0K
-rw-r--r-- 1 labex labex 8 Okt 26 17:47 trash_file.md
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du das Verzeichnis
/tmp/trasheinrichtest, um gelöschte Dateien temporär zu speichern - Wie du ein Skript für einen benutzerdefinierten
rm-Befehl erstellst, der gelöschte Dateien in das Papierkorbverzeichnis verschiebt - Wie du die
PATH-Umgebungsvariable aktualisierst, um den benutzerdefiniertenrm-Befehl zu verwenden - Wie du den benutzerdefinierten
rm -f-Befehl testest, um sicherzustellen, dass er wie erwartet funktioniert
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Deinen Linux-Server vor versehentlichem Dateilöschen zu schützen, indem du einen benutzerdefinierten
rm-Befehl mit einem Papierkorbverzeichnis implementierst - Verstehen, wie du Systembefehle modifizierst, um ihr Standardverhalten zu ändern
- Erfahrungen im Bereich der Shell-Scripting und der Umgebungsvariablenverwaltung sammeln
Den Papierkorbordner einrichten
In diesem Schritt lernst du, wie du das Verzeichnis /tmp/trash einrichtest, um gelöschte Dateien temporär zu speichern.
- Öffne ein Terminal.
- Erstelle das Verzeichnis
/tmp/trashund setze die entsprechenden Berechtigungen:
sudo mkdir /tmp/trash
sudo chown root:root /tmp/trash
sudo chmod 1777 /tmp/trash
Die Berechtigung 1777 aktiviert das "sticky bit" für das Verzeichnis, was es allen Benutzern ermöglicht, in das Verzeichnis zu schreiben, aber nur der Besitzer kann darin enthaltene Dateien löschen.
Die PATH-Umgebungsvariable aktualisieren
In diesem Schritt wirst du die PATH-Umgebungsvariable aktualisieren, um sicherzustellen, dass der benutzerdefinierte rm-Befehl statt des Standard-System-rm-Befehls verwendet wird.
- Erstelle ein neues Verzeichnis, um den benutzerdefinierten
rm-Befehl zu speichern:
sudo mkdir -p /usr/local/custom/bin
- Bearbeite die Datei
/etc/environment:
sudo vim /etc/environment
- Füge das Verzeichnis
/usr/local/custom/binam Anfang derPATH-Variablen hinzu:
PATH="/usr/local/custom/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
- Speichere die Datei und beende den Editor.
- Lade die Datei
/etc/environmentneu, um die Umgebung der aktuellen Shell zu aktualisieren:
source /etc/environment
sudo chmod a+x /usr/local/custom/bin
Jetzt wird der benutzerdefinierte rm-Befehl statt des Standard-System-rm-Befehls verwendet.
Den benutzerdefinierten rm-Befehl erstellen
In diesem Schritt wirst du einen benutzerdefinierten rm-Befehl erstellen, der gelöschte Dateien in das Verzeichnis /tmp/trash verschiebt, anstatt sie permanent zu löschen.
- Erstelle das Skript für den benutzerdefinierten
rm-Befehl:
sudo vim /usr/local/custom/bin/rm
Füge den folgenden Inhalt zur Datei hinzu:
#!/bin/zsh
## Dieses Skript wird verwendet, um Dateien oder Verzeichnisse in das Papierkorbverzeichnis zu verschieben, anstatt sie permanent zu löschen.
## Wenn die Option -f verwendet wird, werden die Ziele in das Papierkorbverzeichnis verschoben.
## Wenn die Ziele nicht existieren, wird eine Fehlermeldung angezeigt.
TRASH_DIR="/tmp/trash"
if [[ "$1" == "-f" ]]; then
shift
for arg in "$@"; do
## Überprüfe, ob das Ziel existiert
if [[ -e "$arg" ]]; then
## Verschiebe das Ziel in das Papierkorbverzeichnis
mv -f "$arg" "$TRASH_DIR"
else
echo "Fehler: $arg existiert nicht."
fi
done
else
## Führe den ursprünglichen rm-Befehl aus
/bin/rm "$@"
fi
- Setze die entsprechenden Berechtigungen für das Skript des benutzerdefinierten
rm-Befehls:
sudo chown root:root /usr/local/custom/bin/rm
sudo chmod 755 /usr/local/custom/bin/rm
Den benutzerdefinierten rm-Befehl testen
In diesem Schritt wirst du den benutzerdefinierten rm -f-Befehl testen, um sicherzustellen, dass er wie erwartet funktioniert.
- Erstelle eine Testdatei im Verzeichnis
/home/labex/project:
touch /home/labex/project/trash_file.md
- Verwende den benutzerdefinierten
rm -f-Befehl, um die Testdatei zu löschen:
rm -f /home/labex/project/trash_file.md
- Verifiziere, dass die Datei in das Verzeichnis
/tmp/trashverschoben wurde:
ls -l /tmp/trash
Du solltest die Datei trash_file.md in der Ausgabe sehen.
gesamt 2,0K
-rw-r--r-- 1 labex labex 8 Okt 26 17:47 trash_file.md
Glückwunsch! Du hast erfolgreich den benutzerdefinierten rm-Befehl implementiert, der gelöschte Dateien in das Verzeichnis /tmp/trash verschiebt, anstatt sie permanent zu löschen.
Zusammenfassung
Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



