Je viens de voir ceci écrit;
$ some-command >| /tmp/output.txt
Les tubes verticaux sont utilisés dans les redirections standard "piping" de la sortie d'une commande à une autre, est >|
en fait complètement inutile car ce serait la même chose que >
dans ce scénario?
bash
io-redirection
pipe
Jwbensley
la source
la source
>|
à: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…Réponses:
Ce n'est pas inutile - c'est une forme spécialisée de l'
>
opérateur de redirection en clair (et, ce qui prête à confusion, rien à voir avec les pipes).bash
et la plupart des autres shells modernes ont une optionnoclobber
qui empêche la redirection d’écraser ou de détruire un fichier déjà existant. Par exemple, sinoclobber
est vrai et que le fichier/tmp/output.txt
existe déjà, alors ceci devrait échouer:Cependant, vous pouvez explicitement remplacer le paramètre de
noclobber
avec l'>|
opérateur de redirection - la redirection fonctionnera même sinoclobber
est définie.Vous pouvez savoir si
noclobber
est défini dans votre environnement actuel avecset -o
.Pour la note historique, l’option "noclobber" et ses fonctions de contournement viennent de
csh
(fin des années 70).ksh
copié (début des années 80) mais utilisé à la>|
place de>!
. POSIX a spécifié laksh
syntaxe (ainsi, tous les shells POSIX, y compris bash, les nouveaux dérivés de cendres utilisés comme sh sur certains systèmes, le prennent en charge). Zsh supporte les deux syntaxes. Je ne pense pas qu'il ait été ajouté à une variante du shell Bourne mais je me trompe peut-être.la source
sh
anoclobber
, depuis mai 2002 environ.