2010-02-18 6 views
137

Algunas herramientas de estilo de código lo recomiendan y recuerdo haber visto algunas herramientas de línea de comandos de Unix que advierten que falta una línea vacía.¿Por qué se recomienda tener una línea vacía al final del archivo?

¿Cuál es el razonamiento para tener una línea vacía adicional?

+5

Algunas herramientas no funcionan si el archivo no termina con un salto de línea. Eso es diferente a tener una línea vacía al final (que serían 2 nuevas líneas). –

+0

Los editores de texto Gedit y Nano (y, según los informes, Vim) agregarán una línea vacía a los documentos que guarde. –

+1

¿Quiere decir línea vacía ('\ n \ n') o nueva línea' \ n'? –

Respuesta

110

Muchas herramientas antiguas se comportan mal si la última línea de datos en un archivo de texto no finaliza con una nueva línea o una combinación de retorno de carro/línea nueva. Ignoran esa línea ya que termina con^Z (eof) en su lugar.

+0

¡Gracias por la respuesta! ¿Algún ejemplo de herramientas populares que puedan exhibir este comportamiento? – cloudrave

+2

@NickM Casi todas las herramientas de línea de comandos POSIX/Unix que toman entrada de texto o leen un archivo de texto asumen una terminación de línea ('\ n') al final del archivo. Varios editores de texto, como Vim, y varios compiladores (especialmente C++ y Python) emitirán advertencias. (En el caso de C++, el estándar explícitamente requiere esto.) – greyfade

28

Aparte del hecho de que es una posición de cursor más agradable cuando se mueve al final de un archivo en un editor de texto.

Tener una nueva línea al final del archivo proporciona una simple comprobación de que el archivo no se ha truncado.

+151

El archivo puede estar truncado y nunca se marcaría –

+1

La primera parte es correcta, la segunda parte no. –

10

Aparece la línea vacía al final del archivo para que la lectura estándar de la secuencia de entrada sepa cuándo finalizar la lectura, generalmente devuelve EOF para indicar que ha llegado al final. La mayoría de los idiomas pueden manejar el marcador EOF. Está ahí por esa razón desde los viejos tiempos, bajo DOS, el marcador EOF era tecla F6 o Ctrl-Z, para sistemas * nix, era Ctrl-D.

La mayoría, si no todos, leerán directamente hasta el marcador EOF para que la función de lectura de la biblioteca en tiempo de ejecución sepa cuándo dejar de leer más. Cuando abre la secuencia para el modo Agregar, borrará el marcador EOF y escribirá más allá de él, hasta que se llame explícitamente a un cierre en el que insertará el marcador EOF en ese punto.

Las herramientas antiguas esperaban una línea vacía seguida de un marcador EOF. Hoy en día, las herramientas pueden manejar la línea vacía e ignorarla.

+5

^D no era "el marcador EOF". Al presionar^D, el shell cerró el lado de escritura del conducto desde el que estaba leyendo el grupo de procesos en primer plano, de modo que una lectura de ese conducto devolvió EOF. No hay un "marcador EOF". –

+0

@William Pursell confundió por error * NIX y Windows. Legacy Windows/DOS usaba un marcador EOF (26, 0x1a) incrustado generalmente al final de la mayoría de los archivos como un holdover para compatibilidad con antiguos CP/M (¿Quién diablos utilizó CP/M después de 1983?). Otra "diversión": '\ r \ n' en lugar de' \ n', llamadas a DOS usando una mezcla de ASCIIZ y ASCII $. Lo que es peor, más adelante en Windows generalmente se inserta una marca de orden de bytes Unicode (BOM) al comienzo de la mayoría de los archivos de texto. Encantadora "singularidad". – Barry

2

Algunos idiomas definen su archivo de entrada en términos de líneas de entrada, donde cada línea de entrada es una serie de caracteres terminados por un retorno de carro. Si su gramática está definida así, la última línea válida del archivo también debe terminar con un retorno de carro.

7

También cuando modifique un archivo y agregue algún código al final del archivo - diff (al menos git diff en la configuración estándar) mostrará que cambió la última línea, mientras que lo único que realmente hizo - agregó un símbolo de nueva línea. Entonces, los informes cvs se vuelven menos convenientes.

21

Si intenta concatenar dos archivos de texto juntos, será mucho más feliz si el primero termina con un carácter de nueva línea.

Cuestiones relacionadas