¿Es tal redirección "|>" solo un error o significa algo?


9

Lo escribí por error, pero bash no imprimió ningún error (pero creó un archivo vacío), así que pensé que tal vez realmente significa algo. (por ejemplo, fecha |> tmp.txt)


1
¿Estás seguro de que el comando no tiene la forma date |> tmp.txt cmd2? Porque eso cambia la respuesta.
Konrad Rudolph

Respuestas:


17

Eso parece ser solo una tubería donde la segunda parte es un comando vacío, que solo contiene la redirección. Escribirlo como date | >filepodría facilitar su interpretación. El comando vacío no hace nada más que procesar la redirección, creando el archivo.

date >| filepor otro lado, actuaría como una anulación para la noclobberopción de shell, lo que evita que el >archivo normal sobrescriba los archivos existentes.

$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo       # works

1

Sí, no arrojará error porque para bash > filesignifica redirigir a un archivo llamado file. Como en su caso no hay nada que redirigir al archivo, bash solo creará un nombre de archivo filesin nada.

[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$ 

Gracioso. Zsh tiene un comportamiento diferente: después del comando, my_filecontiene la salida de date.
NI

12
@NajibIdrissi, en zsh, cuando solo hay redirecciones y ningún comando, zshejecuta el $NULLCMDcomando ( catpor defecto) o $READNULLCMD(un buscapersonas por defecto) si solo hay redirecciones de entrada .
Stéphane Chazelas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.