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)
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)
Respuestas:
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
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]$
my_filecontiene la salida de date.
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 .
date |> tmp.txt cmd2? Porque eso cambia la respuesta.