Ist es möglich, unter Unix mit einem einzigen Befehl zu überprüfen, ob ein Verzeichnis vorhanden ist, und es zu löschen, wenn dies der Fall ist? Ich habe eine Situation, in der ich die ANT-Task 'sshexec' verwende, in der ich nur einen einzigen Befehl auf dem Remotecomputer ausführen kann. Und ich muss überprüfen, ob ein Verzeichnis existiert und es löschen ...
105
mkdir -p
wird Fehler ignoriert, wenn sie bereits vorhanden sind.Antworten:
Angenommen
$WORKING_DIR
, das Verzeichnis ist festgelegt ... dieser Einzeiler sollte dies tun:(ansonsten einfach durch dein Verzeichnis ersetzen)
quelle
Warum nicht einfach benutzen
rm -rf /some/dir
? Dadurch wird das Verzeichnis entfernt, wenn es vorhanden ist. Andernfalls wird nichts unternommen. Im Gegensatz zurm -r /some/dir
dieser Variante stürzt der Befehl nicht ab, wenn der Ordner nicht vorhanden ist.quelle
Versuchen:
BEARBEITEN : Dies funktioniert, wenn Sie Bash auf dem Remote-Computer ausführen können.
BEARBEITEN 2 :
[ -d something ]
Überprüft in bash, ob es ein Verzeichnis mit dem Namen "etwas" gibt, und gibt einen Erfolgscode zurück, falls vorhanden und ein Verzeichnis. Durch Verketten von Befehlen mit && wird der zweite Befehl nur ausgeführt, wenn der erste erfolgreich war. Führt[ -d somedir ] && command
den Befehl also nur aus, wenn das Verzeichnis existiert.quelle
[ -d /test ] && rmdir /test
(oder rm -rf / test, wenn es nicht leer sein wird und Sie den gesamten Inhalt löschen möchten)Hier ist noch ein Liner:
quelle