Doppelte rm-Überprüfung in zsh

15

Wenn ich ein rm * in zsh mache, bekomme ich so etwas:

2014-06-08 10:14:23 $ rm *
zsh: sure you want to delete all the files in /home/assay/assay/log [yn]? y
rm: remove regular file `development.log'? y

Zuerst fragt mich zsh, ob ich sicher bin, dass ich alle löschen möchte, und dann fragt rm nach jeder bestimmten Datei.

Wie kann ich nur die zsh-Bestätigung haben?

ardochhigh
quelle
3
Verwenden Sie rm -f ./*. Fragt standardmäßig rmnichts, es sei denn, Sie haben keine Schreibberechtigung für die Datei. Vielleicht haben Sie einealias rm='rm -i'
Stéphane Chazelas
Oh, das muss es sein - ich führe die Löschvorgänge in einer Vagrant-Shell aus und die Dateien werden auf dem Laptop-Dateisystem gehostet. Danke
Ardochhigh
1
Nur eine Anmerkung, zsh fordert immer noch auf "rm -rf *", dies kann deaktiviert werden mitsetopt rmstarsilent
Matt

Antworten:

30

Die Meldung "zsh: Sicher, dass Sie alle Dateien löschen möchten" ist eine zsh-Funktion, die speziell durch Aufrufen eines Befehls ausgelöst wird, der rmmit einem Argument aufgerufen wird, das *oder something/*vor der Glob-Erweiterung aufgerufen wird . Sie können dies mit ausschalten setopt rm_star_silent.

Die Meldung "rm: reguläre Datei entfernen" stammt aus dem rmBefehl selbst. Es wird standardmäßig nicht angezeigt, sondern nur, wenn rmes mit der Option aufgerufen wird -i. Wenn Sie diese Nachricht nicht möchten, übergeben Sie diese Option nicht. Auch ohne -i, rmAufforderungen zur Bestätigung (mit einer anderen Nachricht) , wenn Sie versuchen , eine schreibgeschützte Datei zu löschen; Sie können diese Bestätigung entfernen, indem Sie die Option übergeben -f.

Da Sie -idie Befehlszeile nicht übergeben haben , rmhandelt es sich vermutlich um einen Alias ​​für rm -i(dies kann auch eine Funktion, ein nicht standardmäßiger Wrapper-Befehl oder ein anderer Alias ​​sein, aber der Alias rm -iist bei weitem der plausibelste). Einige Standardkonfigurationen sind alias rm='rm -i'in ihren Shell-Initialisierungsdateien enthalten. Dies kann etwas sein, das Ihre Distribution oder Ihr Systemadministrator eingerichtet hat, oder etwas, das Sie irgendwo abgeholt und zu Ihrer Konfigurationsdatei hinzugefügt und dann vergessen haben. Überprüfen Sie Ihre ~/.zshrcAlias-Definition für rm. Wenn Sie einen finden, entfernen Sie ihn. Wenn Sie keinen finden, fügen Sie einen Befehl hinzu, um den Alias ​​zu entfernen:

unalias rm
Gilles 'SO - hör auf böse zu sein'
quelle
6

Der richtige Befehl zum Deaktivieren der doppelten Überprüfung scheint zu sein setopt rm_star_silent. Um die doppelte Überprüfung zu aktivieren, tun Sie setopt no_rm_star_silent.

Weitere Informationen finden Sie auf der Manpage zu zshoptions man zshoptionsoder http://linux.die.net/man/1/zshoptions


quelle
oderunsetopt rm_star_silent
evandrix
1

Wenn Sie oh-my-zsh verwenden, enthält das Common-Aliase-Plugin den Alias ​​rm -i.

https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/common-aliases/common-aliases.plugin.zsh

woohoou
quelle
1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Von Review
Jayhendren
@ Jayhendren - Es ist kein Link zur Dokumentation, es ist ein Link zu etwas zu installieren, um das Problem zu beheben ...
Wouter Verhelst