bash: noclobber - Unbewußtes Überschreiben verhindern

Problem

Bei folgender Befehlszeile

$ meinbefehl > logdatei

wird die Datei logdatei überschrieben, wenn sie vorher existiert hat.

Lösung

Dieses Überschreiben kann in vielen Fällen nicht gewünscht sein. Hierfür gibt es in verschiedenen Shells (C,ksh,bash) die Option noclobber.

C-Shell Bash, ksh
% set noclobber $ set -o noclobber
% ls $ ls
datei1 datei2 datei1 datei2
% cmd > datei2 $ cmd > datei2
datei2: File exists. -bash: datei2 : cannot overwrite existing file

Um die Datei dennoch überschreiben zu können, ist ein ! bzw. ein | zu verwenden.

C-Shell Bash, ksh
% cmd >! datei2 $ cmd >| datei2

:!: noclobber ist keine Umgebungsvariable, d.h. es ist dieser Wert für jede Shell zu setzen (z.B. in der .bashrc).

 
wissen/tips_und_tricks/bash/unbewusstes-ueberschreiben-von-dateien-bei-eingabe-ausgabe-verhindern.txt · Zuletzt geändert: 05.09.2010 20:31
 
Recent changes RSS feed Donate Valid XHTML 1.0 Valid CSS Recent cached RSS feed cacert-signed web site: inhalt.serviert.de