No son válidos en csh
. ¿Cuál es la regla general para usarlos en bash
y zsh
?
Respuesta1
Con bash, las redirecciones sin un comando simplemente realizan las redirecciones y luego las cierran:
< foo.txt
por sí solo como una línea de comando abrirá el archivofoo.txt
para leerlo y luego lo cerrará.> foo.txt
abrirá el archivofoo.txt
para escribirlo, creándolo si es necesario y truncándolo, y luego lo cerrará. Manera rápida de vaciar un archivo.
Con zsh, las redirecciones sin ejecutar un comando NULLCMD
o READNULLCMD
.
READNULLCMD
(oNULLCMD
, si `READNULLCMD no está configurado) para redirecciones de stdin:% echo foo > foo.txt % READNULLCMD=nl % < foo.txt 1 foo
NULLCMD
para redirecciones de stdout:% NULLCMD='ls' % > foo.txt # runs $NULLCMD % < foo.txt # runs $READNULLCMD, showing the output of `NULLCMD` run previously 1 Applications 2 Desktop 3 Documents 4 Downloads
VerZsh 7.3, Redirecciones sin comandopara detalles:
Cuando un comando simple consta de uno o más operadores de redirección y cero o más asignaciones de parámetros, pero ningún nombre de comando, zsh puede comportarse de varias maneras.
Si el parámetro
NULLCMD
no está configurado o la opciónCSH_NULLCMD
está configurada, se produce un error. Este es elcshcomportamiento yCSH_NULLCMD
se establece de forma predeterminada al emularcsh.Si
SH_NULLCMD
se establece la opción, el incorporado:
se inserta como un comando con las redirecciones dadas. Este es el valor predeterminado al emularshoksh.De lo contrario, si se establece el parámetro
NULLCMD
, su valor se utilizará como un comando con las redirecciones dadas. Si se establecen ambosNULLCMD
yREADNULLCMD
, entonces se usará el valor del último en lugar del primero cuando la redirección sea una entrada. El valor predeterminadoNULLCMD
es 'cat
' yREADNULLCMD
es 'more
'. De este modo< file
muestra el contenido del archivo en la salida estándar, con paginación si se trata de una terminal.
NULLCMD
yREADNULLCMD
puede referirse a funciones de Shell.