Warum kann ich eine Datei mit einem Bash-Skript nicht löschen?

11406
CamelBlues

Ich kann anscheinend nicht rmvon einem Bash-Skript aus laufen und eine Datei entfernen.

#!/bin/bash rm -rf myjunk.out exit 0; 

nicht entfernen myjunk.out.

1
Befreien Sie sich von 'exit 0' und prüfen Sie, ob Fehlermeldungen angezeigt werden. ChrisF vor 13 Jahren 1
Und es funktioniert, wenn Sie einfach `rm -rf myjunk.out` von der Kommandozeile ausführen? Was löst die Ausführung dieses Skripts aus? BloodPhilia vor 13 Jahren 0
Nur für den Datensatz ist -r für Verzeichnisse bestimmt (rekursiv). Wenn Sie also eine Datei entfernen möchten, ist -r sinnlos. Welchen Fehler bekommst du? Wie führe ich dieses Skript aus? Wie lauten die Berechtigungen für dieses Skript? Torian vor 13 Jahren 2
@BloodPhilla wird ausgelöst, weil myjunk.out zu einem früheren Zeitpunkt im Skript generiert wurde. @Torian -r war da, weil ich gerade Sachen ausprobiert habe CamelBlues vor 13 Jahren 0

2 Antworten auf die Frage

4
beth22

Stellen Sie zunächst sicher, dass Sie myjunk.out löschen können, ohne das Skript auszuführen . Wenn nicht, überprüfen Sie das Dateiattribut mit lsattr.

Zweitens müssen Sie nicht zur Verfügung stellen exit 0;

Zeigen Sie später einen Pfad zu myjunk.out, z.

rm -rf /path/to/myjunk.out 
Entfernen Sie auch die '-r'-Flagge. es ist unnötig und gefährlich. Keith vor 13 Jahren 0
Eigentlich den Ausgang 0 herausnehmen; Erlaubt, dass rm install.out ordnungsgemäß ausgeführt wird. Vielen Dank! CamelBlues vor 13 Jahren 0
Was ist die Erklärung für: Warum der "Exit 0" dazu führt, dass der RM nicht funktioniert? Emmanuel Devaux vor 10 Jahren 0
0
Klaas-Z4us-V

Die -fOption verhindert Fehlermeldungen. Die Manpage sagt:

Versuchen Sie, die Dateien zu entfernen, ohne dass Sie zur Bestätigung aufgefordert werden, unabhängig von den Berechtigungen der Datei. Wenn die Datei nicht vorhanden ist, zeigen Sie keine Diagnosemeldung an oder ändern Sie den Beendigungsstatus, um einen Fehler anzuzeigen. Die -fOption überschreibt alle vorherigen -iOptionen.

Ich habe den relevanten Teil hervorgehoben. Um lohnende Warnungen zu erhalten, sollten Sie die Optionsflags von Ihrem rmBefehl entfernen :

rm myjunk.out 
Dies ist mehr ein Kommentar als eine Antwort. Chenmunka vor 8 Jahren 0