Debo aclarar que con el título de El orígen del Ctrl-Z, no me refiero a los inicios del atajo de teclado para el comando deshacer, que se usó de forma conocida por primera vez en los Laboratorios Xerox de Palo Alto, sino a la cada vez menos usual forma de marcar los fines de archivo con el carácter Ctrl-Z (ASCII 26).

Aunque Raymond de The Old New Thing, lo explica mejor que yo, la causa viene heredada de DOS, que a su vez lo heredó de CP/M, con el que debía ser compatible.

Hasta ahí, es algo que al menos yo, e intuyo que muchos de vosotros también, ya sabíamos. Pero, ¿por qué CP/M marcaba así el final del archivo?

Pues bien, resulta que el espacio en disco para los ficheros, se marcaba usando sectores de 128 bytes, así que si un sector no quedaba ocupado por completo, se rellenaba (padding) usando el carácter 1Ah.

Con MS-DOS, esto ya no era necesario, pues la FAT, realmente almacena el espacio de los archivos en bytes, pero por lo de la compatibilidad comentada anteriormente, debía permitirse el intercambio de archivos entre DOS y FAT, sin arrastrar la posible basura del final. Es por ello que incluso hoy día algunos comandos como COPY, tendrán en cuenta el carácter de fin.

El paso de los años, ha ido arrastrando esta convención. Tanto es así, que si desde el Windows más reciente, introducís en una consola de comandos COPY CON, el sistema recibirá entradas por STDIN (teclado), y las sacará (echo) por STDOUT (pantalla); pero esperará que abortemos el proceso con Ctrl-Z, a pesar de los más de 30 años transcurridos entre CP/M y Windows..