Ich suche nach einer Lösung als Antwort auf "rm: schreibgeschützte reguläre Datei entfernen [x]?"
Ich habe darüber nachgedacht, in bashrc eine Figur zu veröffentlichen, der mehrere Male ein Wagenrücklauf folgt. Wie machen wir das?
Ich suche nach einer Lösung als Antwort auf "rm: schreibgeschützte reguläre Datei entfernen [x]?"
Ich habe darüber nachgedacht, in bashrc eine Figur zu veröffentlichen, der mehrere Male ein Wagenrücklauf folgt. Wie machen wir das?
Antworten:
Bearbeiten basierend auf aktualisierter Frage:
Fügen Sie die -fOption ("force") hinzu, um zu vermeiden, dass Sie zum Entfernen von Dateien aufgefordert werden :
rm -f /path/to/file
Dies hat einen Nebeneffekt, den Sie beachten sollten: Wenn einer der angegebenen Pfade nicht vorhanden ist, wird dies nicht gemeldet und es wird erfolgreich zurückgegeben:
$ rm -f /nonexistent/path
$ echo $?
0
Ursprüngliche Antwort:
Hier ist eine einfache Lösung:
yes "$string" | head -n $number | tr $'\n' $'\r'
yesWiederholt jede Zeichenfolge, die Sie eingeben, unendlich, durch Zeilenumbrüche getrennt. headstoppt es nach einiger $numberZeit und trübersetzt die Zeilenumbrüche in Zeilenumbrüche. Möglicherweise wird aufgrund der Wagenrückläufe keine Ausgabe angezeigt, die Übergabe an diesen Befehl (in bash) sollte dies jedoch veranschaulichen:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Benutzer ohne bashDosenrohr das Ergebnis od, hexdumpoder xxddie tatsächlichen Zeichen zurückgegeben , um zu sehen.
Das andere Problem, auf das ich von Zeit zu Zeit rmgestoßen bin, ist rm -idas folgende:
alias rm='rm -i'
In diesem Fall können Sie entweder unalias rmoder Sie können diesen Trick, den ich vor Jahren herausgefunden habe, verwenden, indem Sie einen Backslash vor einen Befehl setzen, der mit einem Alias versehen wurde, um den Alias nur einmal zu ignorieren. Beispiel:
\rm somefile
Sie können mehr über Aliase in einem Artikel bei Nixcraft erfahren .
rmist fest codiert, um "interaktiv" (Eingabeaufforderung wartet auf Benutzereingabe) nach schreibgeschützten Dateien zu fragen. Es gibt zwei Methoden, um zu verhindern, dass rmgefragt wird:
rm -rf somedir
und
rm -r --interactive=never somedir
(beide funktionieren auch ohne -rbeim löschen von dateien statt dirs)
Erläuterung:
-fbewirkt rm, dass "nicht vorhandene Dateien und Argumente ignoriert werden, niemals aufgefordert wird".
--interactive=nevertut was es sagt: Sei niemals interaktiv. mit anderen worten: nie auffordern.
Der Unterschied zwischen -fund --interactive=neverist dieser Teil: "Ignoriere nicht vorhandene Dateien und Argumente".
vergleichen Sie:
$ rm -rf nonexistingname
$ echo $?
0
und
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
Der Unterschied ist vor allem dann interessant, wenn Sie Skripte schreiben, bei denen Sie nie rminteraktiv sein möchten, aber dennoch Fehler behandeln möchten.
Zusammenfassung: In der Befehlszeile verwenden rm -rf. in Skripten verwenden rm -r --interactive=never.
Eine Antwort auf die angegebene Frage ("Wie Sie vermeiden, dass beim Entfernen einer geschützten Datei mehrmals ein" y "ausgegeben werden muss") finden Sie unter https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860 # 338860
Ich bin auch auf dasselbe Problem gestoßen. Die obige Antwort gilt nur für eine Datei, aber wenn Sie viele Ja ignorieren möchten.
Sie können verwenden
sudo rm -r /path/to/directory
um alle schreibgeschützten regulären Dateien zu entfernen