¿Qué significa>&?
Estaba un poco confundido por esta expresión:{[10]]}
gcc -c -g program.c >& compiler.txt
Sé que &>filename
redirigirá tanto stdout como stderr a file filename
. Pero en este caso el ampersand está después del signo mayor que. Se parece a su de la forma M>&N
, donde M
y N
son descriptores de archivo.
En el fragmento de código anterior, ¿M=1
y N='compiler.txt'
? ¿En qué se diferencia esto exactamente de:
gcc -c -g program.c > compiler.txt (ampersand removed)
Entiendo que cada archivo abierto está asociado con un descriptor de archivo mayor que 2. Es este ¿correcto?
Si es así, es un nombre de archivo intercambiable con su descriptor de archivo como el objetivo de la redirección?
2 answers
Esto es lo mismo que &>
. De la página de manual de bash:
Redireccionamiento de Salida Estándar y Error Estándar Esta construcción permite tanto la salida estándar (descriptor de archivo 1) y la salida de error estándar (descriptor de archivo 2) para ser redirigido a la archivo cuyo nombre es la expansión de word.
There are two formats for redirecting standard output and standard error: &>word and >&word Of the two forms, the first is preferred. This is semantically equiva- lent to >word 2>&1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-10 11:10:25
&>
vs >&
: la versión preferida es &>
(clobber)
Respecto a:
&>
>&
Ambos clobber el archivo - truncarlo archivo a 0 bytes antes de escribir en él, al igual que > file
haría en el caso de solo STDIN.
Sin embargo , el bash
la sección de redirecciones manuales agrega que:
De las dos formas, se prefiere la primera. Esto es semánticamente equivalente a
>word 2>&1
Cuando se usa la segunda forma, word no puede expandirse a un número o
-
. Si lo hace, se aplican otros operadores de redirección (consulte Duplicar descriptores de archivo más abajo) por razones de compatibilidad.
(Nota: {[49] {} en[11]} ambos son equivalentes.)
Es muy buena práctica obtener la memoria de los dedos en la primera forma (&>
), porque:
Use &>>
como >>&
no está soportado por bash
(anexar)
Solo hay una forma de anexar:
El formato para agregar salida estándar y error estándar es:
&>>word
Esto es semánticamente equivalente a
>>word 2>&1
(ver Descriptores de Archivo Duplicados más abajo).
Nota:
- El uso clobber de
&>
sobre>&
en la sección anterior es nuevamente recomendado dado que solo hay una forma de agregar enbash
. -
zsh
permite ambas formas&>>
y>>&
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-17 03:25:13