Ich habe gerade gesehen, wie das aufgeschrieben wurde.
$ some-command >| /tmp/output.txt
Vertikale Pipes werden in Standard-Redirects verwendet, um die Ausgabe eines Befehls an einen anderen zu "leiten". Ist dies >|
in der Tat völlig nutzlos, wie es auch >
in diesem Szenario der Fall wäre ?
bash
io-redirection
pipe
jwbensley
quelle
quelle
>|
: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…Antworten:
Es ist nicht nutzlos - es ist eine spezielle Form des einfachen
>
Umleitungsoperators (und vielleicht verwirrend, nichts mit Pipes zu tun).bash
und die meisten anderen modernen Shells haben eine Optionnoclobber
, die verhindert, dass die Umleitung eine bereits vorhandene Datei überschreibt oder zerstört. Wenn beispielsweisenoclobber
true ist und die Datei/tmp/output.txt
bereits vorhanden ist, sollte dies fehlschlagen:Sie können die Einstellung von jedoch explizit
noclobber
mit dem>|
Umleitungsoperator überschreiben - die Umleitung funktioniert, auch wenn festgelegtnoclobber
ist.Mit können Sie herausfinden, ob
noclobber
in Ihrer aktuellen Umgebung eingestellt istset -o
.Aus historischer Sicht stammen sowohl die "Noclobber" -Option als auch deren Bypass-Funktionen aus den
csh
späten 70er Jahren.ksh
kopiert (Anfang der 80er Jahre), aber>|
stattdessen verwendet>!
. POSIX hat dieksh
Syntax angegeben (daher unterstützen alle POSIX-Shells, einschließlich Bash, neuere Aschederivate, die auf einigen Systemen als sh verwendet werden, diese Syntax). Zsh unterstützt beide Syntaxen. Ich glaube nicht, dass es zu einer Bourne-Shell-Variante hinzugefügt wurde, aber ich könnte mich irren.quelle
sh
hatnoclobber
seit ungefähr Mai 2002.