Hoy es 2018, y el mensaje de error nos envía saludos desde 1974. Esta limitación, que se encuentra en las últimas versiones de Windows 10, se remonta a la época en que no se filmó un solo episodio
de Star Wars . Este error es tan antiguo como
Watergate . Cuando se escribió, ni un solo producto tenía un
código de barras UPC porque se acaba de inventar. En aquellos días, solo había una
compañía telefónica , que no estaba dividida.
Ted Bundy estaba libre. El récord de Beiba Ruta para jonrones solo está
preparado para caer .
La Rueda de la fortuna aún no se había mostrado, y nadie había visto el
Rocky Horror Horror Show .
Steven Spielberg era entonces un director poco conocido,
"Saturday Night Live" no apareció en las pantallas.
"Edmund Fitzgerald" mientras transportaba mineral de hierro. ¡Fue el año del estreno de la Parte 2 de
El Padrino !
En aquel entonces, Unix, que solo tenía
5 años , tuvo la genial idea de que "todo es un archivo". Esto significa que puede hacer cosas diferentes, como escribir en tomas, tuberías, consolas, etc., utilizando los mismos comandos e instrucciones. El concepto fue trasladado por
Gary Kildall a
CP / M en 1974. ¡Puede copiar datos del puerto serie a un archivo de texto o imprimir un archivo de texto directamente desde la línea de comandos! En Unix, esto se hace usando archivos especiales ubicados en directorios especiales, por ejemplo, / dev / tty para la consola o / dev / lp0 para la primera impresora. Puede obtener ceros sin fin desde / dev / zero, bytes aleatorios desde / dev / random, etc.
Pero hay un problema: CP / M está diseñado para computadoras de 8 bits con una cantidad muy pequeña de memoria y sin discos duros. En el mejor de los casos, tenían 8 "disquetes. ¿Y directorios? No los necesita. En lugar de directorios, simplemente usó discos diferentes. Pero sin directorios no podría poner todos sus archivos especiales en / dev /. Por lo tanto, de hecho estaban" en todas partes ". Es decir, si tenía FOO.TXT y necesitaba imprimirlo, podría hacer PIP LST: = FOO.TXT para copiar FOO.TXT en el archivo LST, que es la impresora, y simplemente funcionó en cualquier lugar, porque que el directorio no existía
¿Qué pasa con las extensiones? Tampoco todo es fácil: los programas prefieren agregar las extensiones correctas a sus archivos. Es decir, si ejecuta el programa y dice "Ingrese un nombre de archivo para guardar la lista", puede ingresar LST para imprimirlo o PTP para escribirlo en cinta (porque está en 1974, ¿recuerda?). ¡Pero el programa puede intentar agregar .TXT al final del archivo! Pero LST.TXT ya no es una impresora, ¿verdad? No importa como. Esto es todo Los nombres de los dispositivos se reconocen independientemente de las extensiones. Es decir, si se asigna "CON" al teclado, entonces CON.TXT y CON.BUG también. Hm. Este es un truco, pero funciona. Además, en cualquier basura con 4KB RAM, ¿no te importa?
Bueno, CP / M se generalizó a finales de los 70 y principios de los 80. Se convirtió en uno de los principales sistemas operativos para empresas, definiendo una interfaz estándar. Esto significaba que podía escribir código CP / M en
NorthStar Horizon y ejecutarlo en
Seequa Chameleon . La falta de un estándar gráfico en su mayor parte no le permitió ingresar al mercado de juegos (aunque hubo lanzamientos de
Infocom ), centrándose principalmente en los usuarios comerciales. Pero aún así, fue significativo, por lo que el deseo de IBM de usarlo en su proyecto de PC a principios de los 80 se hizo natural. Entonces IBM iba a lanzar una PC IBM con varios sistemas operativos, esperando que CP / M se convirtiera en uno de los principales. Pero CP / M para x86 no salió seis meses después del lanzamiento de la PC de IBM, y costó $ 240 versus $ 40 para DOS.
Como resultado, la gran mayoría de los usuarios comenzaron a usar PC-DOS de Microsoft, que se convirtió en la evolución del nuevo sistema operativo desarrollado por
Seattle Computer Products . Microsoft compró el proyecto de Tim Paterson y creó PC-DOS basado en él, que luego se convirtió en MS-DOS. El sistema operativo de Tim Paterson se llamaba
"QDOS", que significaba "Sistema operativo rápido y sucio". Se basó en CP / M, que no tenía una versión x86, y trató de resolver algunas de las limitaciones de CP / M. En muchos sentidos, estos eran sistemas muy similares. Una de las características comunes fue la idea de usar archivos especiales y la falta de directorios. Por lo tanto, QDOS y PC-DOS 1.0 tenían todos estos AUX, PRN, CON, LPT, etc.
Con el lanzamiento de PC-DOS 2.0 en 1983, Microsoft rediseñó significativamente PC-DOS para el nuevo IBM XT. Obviamente, solo necesitaba directorios para mantener en orden sus enormes discos de 10 megabytes, que luego aparecieron en el mercado. Y de nuevo, mala suerte: los usuarios han estado trabajando con sus archivos especiales durante un par de años desde el lanzamiento de la versión anterior de PC DOS 1.0. Se escribieron programas y scripts para usar estos archivos. Con el soporte de directorios, Microsoft finalmente pudo eliminar todo en C: \ DEV ... pero no lo hizo. Como sucederá más de una vez, Microsoft aportó sentido común al altar de la compatibilidad con versiones anteriores: permanecieron archivos especiales en cada directorio con cualquier extensión. Este legado se ha llevado a todas las versiones hasta Windows 95. Pero bueno, ahora no usamos Windows 95, porque la rama moderna de los sistemas operativos se basa en Windows NT. Pero también necesitaba compatibilidad con los programas de DOS / Windows. Por lo tanto, estos archivos especiales aún funcionan, ¡después de cuarenta y cuatro putos años! Pruébelo usted mismo: abra el explorador, cree un nuevo archivo de texto y asígnele el nombre con.txt. aux.txt o prn.txt. Ahí estaba.

Es decir, gracias a Gary Kildall, quien dijo: “¡Los archivos especiales representan el equipo! Buena idea, Unix. Lo tomé prestado e intento implementarlo en mi sistema operativo de juguete "hace tanto tiempo que las personas nacidas en ese momento ya pueden tener hijos a los que se les permite beber alcohol ... todavía no podemos nombrar los archivos con.txt. Microsoft incluso tiene una
lista especial: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 y LPT9. Para hacer las cosas divertidas, recuerde que intentar acceder a C: \ con \ con (o C: \ aux \ aux) arrojó inmediatamente Windows 95 al BSOD. ¡Fue divertido en 1995, porque entonces este error ya tenía 21 años!

AntecedentesEncontré esto cuando me di cuenta de que tengo un archivo que no se puede copiar. Estos nombres de archivo especiales se implementan a nivel del sistema operativo y no a nivel del sistema de archivos. Por lo tanto, son nombres de archivo válidos en NTFS. Y utilicé el disco NTFS en Linux. Y aparentemente, OS / 2 no es compatible con este sistema de nombres especiales, como resultado de lo cual entre los archivos opengl estaba AUX.H en una de las unidades para Devcon.

Y hoy traté de hacer una copia de seguridad de este disco NTFS en mi computadora principal, y "¡Uy, no puedo copiar todos los archivos debido al error, más antiguo que la mayoría de la gente que lee esto".
ExplicacionesEn CP / M, trabajar con nombres especiales no es tan simple como lo describí. Por ejemplo, para acceder al dispositivo, necesita dos puntos en el nombre: PRN: es una impresora, pero PRN no lo es. Además, en CP / M, el trabajo con archivos de dispositivo no se implementa a nivel del sistema operativo, como en DOS. Esto es solo parte del comando PIP para copiar archivos. Es decir, no podrá realizar, como en DOS, un truco que indica al programa que guarde PRN.TXT para imprimirlo.
Y por si acaso, aclararé: no me refiero a nada como "Windows apesta". La compatibilidad con versiones anteriores suele ser una gran cosa. De hecho, quiero MÁS compatibilidad con versiones anteriores, nada menos. Me volví loco, habiendo encontrado un error de 44 años al ejecutar Windows 10 al intentar copiar de una unidad SSD USB 3.0 a otra SSD. Es como vivir en una estación espacial y ser pisoteado por un caballo.