top running name bash io file-descriptor io-redirection

bash - running - ¿Qué significa> &?



ssh find process name (2)

&> vs >& : la versión preferida es &> (clobber)

Respecto a:

  • &>
  • >&

ambos pegarán el archivo; truncarán el archivo a 0 bytes antes de escribirlo, igual que lo haría el > file en el caso de solo STDIN.

Sin embargo , la sección de redirecciones manuales de bash 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, la palabra no puede expandirse a un número o - . Si lo hace, se aplican otros operadores de redirección (ver Descriptores de archivos duplicados a continuación) por razones de compatibilidad.

(Nota: en zsh ambos son equivalentes .)

Es una buena práctica obtener la memoria de los dedos en la primera forma ( &> ), porque:

Use &>> as >>& no es compatible con bash (anexar)

Solo hay un formulario adjunto:

El formato para agregar la salida estándar y el error estándar es:

&>>word

Esto es semánticamente equivalente a

>>word 2>&1

(Ver Descriptores de archivos duplicados a continuación).

Nota:

  • El uso de clobber de &> over >& en la sección anterior se recomienda de nuevo, dado que solo hay una forma de añadir bash .
  • zsh permite tanto &>> como >>& formas.

Estaba un poco confundido por esta expresión:

gcc -c -g program.c >& compiler.txt

Sé que &>filename redireccionará tanto stdout como stderr al filename archivo. Pero en este caso, el signo es después del signo mayor que. Parece que tiene la forma M>&N , donde M y N son descriptores de archivos.

En el fragmento anterior, ¿ M=1 y N=''compiler.txt'' ? ¿Cómo es exactamente esto diferente de:

gcc -c -g program.c > compiler.txt (ampersand removed)

Mi entendimiento es que cada archivo abierto está asociado con un descriptor de archivo mayor que 2. ¿Es esto correcto?

Si es así, ¿es un nombre de archivo intercambiable con su descriptor de archivo como el objetivo de la redirección?


Esto es lo mismo que &> . De la página de manual de bash:

Redireccionar la salida estándar y el error estándar Esta construcción permite que tanto la salida estándar (descriptor de archivo 1) como la salida de error estándar (descriptor de archivo 2) se redirijan al 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