Liebe Fachleute,
LaTeX erzeugt meist etliche Hilfsdateien. Die können nach Abschluß des Projekts gelöscht werden, wofür ich mir ein bash-Alias eingerichtet (und in .bashrc abgespeichert) habe:
$ alias rmTeX='rm -i *.aux *.log'
(Das originale Alias umfaßt noch andere Dateinamen-Endungen; hier geht es nur ums Prinzip.)
Wenn es mindestens eine aux- und mindestens eine log-Datei gibt, funktioniert das Alias wie gewünscht. Fehlen solche Dateien, gibt es eine Fehlermeldung:
$ rm -f *.aux *.log $ touch 1.aux $ rmTeX rm: Normale leere Datei '1.aux' entfernen? rm: das Entfernen von '*.log' ist nicht möglich: Datei oder Verzeichnis nicht gefunden $
Diese Fehlermeldung wollte ich unterdrücken:
$ alias rmTeX='rm -i *.aux *.log 2> /dev/null'
Das funktioniert auch, ABER jetzt wird auch die von "rm -i" erzeugte Abfrage
rm: Normale leere Datei '1.aux' entfernen?
ebenfalls unterdrückt. Statt dessen wartet bash stumm auf eine Eingabe.
Läßt sich das gewünschte Verhalten (Löschdialoge ja, Fehlermeldungen nein) erreichen?
Vielen Dank Jakob
P. S. distrowatch.com gibt als aktuelle bash-Version 5.1.16 an. Bei mir läuft noch Version 4.4.20(1)-release (x86_64-pc-linux-gnu), doch halte ich das nicht für die Ursache des Problems.
$ alias rmTeX='rm -i *.aux *.log'
[...]
Das funktioniert auch, ABER jetzt wird auch die von "rm -i" erzeugte Abfrage
[..]
ebenfalls unterdrückt.
Trenne das finden und die Nachfrage...
find -maxdepth 1 -type f -and ( -name "*.aux" -o -name "*.log" ) -exec rm -i {} ;
Andreas
Perfekt. Danke!
Am 30.06.22 um 13:43 schrieb Andreas Stieger:
$ alias rmTeX='rm -i *.aux *.log'
[...]
Das funktioniert auch, ABER jetzt wird auch die von "rm -i" erzeugte Abfrage
[..]
ebenfalls unterdrückt.
Trenne das finden und die Nachfrage...
find -maxdepth 1 -type f -and ( -name "*.aux" -o -name "*.log" ) -exec rm -i {} ;
Andreas
Am 30.06.22 um 13:23 schrieb Jakob Mendel:
Liebe Fachleute,
LaTeX erzeugt meist etliche Hilfsdateien. Die können nach Abschluß des Projekts gelöscht werden, wofür ich mir ein bash-Alias eingerichtet (und in .bashrc abgespeichert) habe:
$ alias rmTeX='rm -i *.aux *.log'
(Das originale Alias umfaßt noch andere Dateinamen-Endungen; hier geht es nur ums Prinzip.)
Wenn es mindestens eine aux- und mindestens eine log-Datei gibt, funktioniert das Alias wie gewünscht. Fehlen solche Dateien, gibt es eine Fehlermeldung:
$ rm -f *.aux *.log $ touch 1.aux $ rmTeX rm: Normale leere Datei '1.aux' entfernen? rm: das Entfernen von '*.log' ist nicht möglich: Datei oder Verzeichnis nicht gefunden $
Diese Fehlermeldung wollte ich unterdrücken:
$ alias rmTeX='rm -i *.aux *.log 2> /dev/null'
warum nicht
alias rmTeX='rm -if *.aux *.log' ?
Willst Du wirklich bei jeder Datei gefragt werden, ob sie gelöscht werden soll?
Du kannst die Dateien auch liegen lassen und der .gitignore hinzufügen.
Das funktioniert auch, ABER jetzt wird auch die von "rm -i" erzeugte Abfrage
rm: Normale leere Datei '1.aux' entfernen?
ebenfalls unterdrückt. Statt dessen wartet bash stumm auf eine Eingabe.
Läßt sich das gewünschte Verhalten (Löschdialoge ja, Fehlermeldungen nein) erreichen?
Vielen Dank Jakob
P. S. distrowatch.com gibt als aktuelle bash-Version 5.1.16 an. Bei mir läuft noch Version 4.4.20(1)-release (x86_64-pc-linux-gnu), doch halte ich das nicht für die Ursache des Problems.
Am 30.06.22 um 21:11 schrieb Tobias Schlemmer:
Am 30.06.22 um 13:23 schrieb Jakob Mendel:
[...] $ alias rmTeX='rm -i *.aux *.log' [vs.] $ alias rmTeX='rm -i *.aux *.log 2> /dev/null'
warum nicht
alias rmTeX='rm -if *.aux *.log' ?
-f übersteuert -i und löscht ohne Rückfrage.
Willst Du wirklich bei jeder Datei gefragt werden, ob sie gelöscht werden soll?
Bei kleineren Projekten, bei denen ich die Hilfsdateien von der Kommandozeile aus lösche: JA, und zwar aus zwei Gründen: zum einen, um die Dateien einzeln löschen zu können, zum anderen, um quasi nebenbei zu sehen, welche Hilfsdateien überhaupt erzeugt werden.
Große Projekte werden dagagen per makefile verwaltet, und dort wird automatisch gelöscht.
Du kannst die Dateien auch liegen lassen und der .gitignore hinzufügen.
Stimmt. Sie sind dort auch schon vermerkt. :-)
Jakob
Servus Jakob,
Dein eigentliches Problem ist, dass für nicht existierende Dateien das '*.log' wortwörtlich an rm übergeben wird - und rm findet keine Datei, die exakt *.log heißt.
Du wolltest deine Shell eigentlich bitten, dann den Glob komplett wegzulassen. Dafür gibt es nullglob: http://bash.cumulonim.biz/NullGlob.html
Grüße, Andre
On 30 June 2022 13:23:56 CEST, Jakob Mendel jm.2009@web.de wrote:
Liebe Fachleute,
LaTeX erzeugt meist etliche Hilfsdateien. Die können nach Abschluß des Projekts gelöscht werden, wofür ich mir ein bash-Alias eingerichtet (und in .bashrc abgespeichert) habe:
$ alias rmTeX='rm -i *.aux *.log'
(Das originale Alias umfaßt noch andere Dateinamen-Endungen; hier geht es nur ums Prinzip.)
Wenn es mindestens eine aux- und mindestens eine log-Datei gibt, funktioniert das Alias wie gewünscht. Fehlen solche Dateien, gibt es eine Fehlermeldung:
$ rm -f *.aux *.log $ touch 1.aux $ rmTeX rm: Normale leere Datei '1.aux' entfernen? rm: das Entfernen von '*.log' ist nicht möglich: Datei oder Verzeichnis nicht gefunden $
Diese Fehlermeldung wollte ich unterdrücken:
$ alias rmTeX='rm -i *.aux *.log 2> /dev/null'
Das funktioniert auch, ABER jetzt wird auch die von "rm -i" erzeugte Abfrage
rm: Normale leere Datei '1.aux' entfernen?
ebenfalls unterdrückt. Statt dessen wartet bash stumm auf eine Eingabe.
Läßt sich das gewünschte Verhalten (Löschdialoge ja, Fehlermeldungen nein) erreichen?
Vielen Dank Jakob
P. S. distrowatch.com gibt als aktuelle bash-Version 5.1.16 an. Bei mir läuft noch Version 4.4.20(1)-release (x86_64-pc-linux-gnu), doch halte ich das nicht für die Ursache des Problems.
lug-dd@mailman.schlittermann.de