Στα Windows 11, μπορείτε να δώσετε σε ένα αρχείο ένα όνομα 200 χαρακτήρων, γεμάτο κενά και emoji. Ωστόσο, αν τολμήσετε να ονομάσετε ένα αρχείο ή έναν φάκελο απλώς “CON”, η Εξερεύνηση Αρχείων (File Explorer) θα αρνηθεί κατηγορηματικά. Τα CON, PRN, AUX, NUL, COM1 έως COM9 και LPT1 έως LPT9 αποτελούν δεσμευμένα ονόματα συσκευών. Σύμφωνα με τον μηχανικό της Microsoft, Raymond Chen, η προέλευσή τους εντοπίζεται στο DOS 1.0 — μια έκδοση που δεν διέθετε καν φακέλους…
Τα Windows 11 εξακολουθούν να αντιμετωπίζουν τα CON, NUL και COM1 σαν συσκευές και όχι σαν ονόματα αρχείων.
Δες περισσότερα άρθρα του iGuRu.gr όταν αναζητάς ειδήσεις στην Google.
Η τεκμηρίωση της Microsoft σχετικά με την ονοματοδοσία αρχείων είναι απόλυτα σαφής: “Μη χρησιμοποιείτε τα ακόλουθα δεσμευμένα ονόματα για την ονομασία αρχείων”. Οι κανόνες αυτοί ισχύουν και για τους φακέλους, καθώς τα Windows αντιμετωπίζουν τον φάκελο σαν έναν ειδικό τύπο αρχείου.
Η προσθήκη μιας επέκτασης αρχείου υποτίθεται ότι δεν βοηθά (αν και, στην πραγματικότητα, βοηθά!). Σύμφωνα με τη Microsoft, “τα NUL.txt και NUL.tar.gz είναι ισοδύναμα με το NUL”. Ακόμη και οι εκθέτες δεν αποτελούν εξαίρεση, καθώς τα Windows αναγνωρίζουν τα ¹, ² και ³ σαν ψηφία· έτσι, τα COM¹ και LPT³ είναι δεσμευμένα “σε κάθε κατάλογο”.
Από αρχιτεκτονική άποψη, το COM1 αποτελεί σύνδεσμο προς τη σειριακή θύρα εντός του πυρήνα των Windows —κάτι που η Microsoft αποκαλεί “όνομα συσκευής MS-DOS”. Έτσι, πληκτρολογώντας COM1, η εντολή κατευθύνεται στη θύρα και όχι σε κάποιο αρχείο.
Ο Raymond Chen εξηγεί γιατί ένας κανόνας από το DOS 1.0 παραμένει σε ισχύ στα Windows 11.
Σε μια ανάρτηση του 2003 στο blog του, “Old New Thing”, ο Chen εξηγεί ότι “το DOS 1.0 δεν υποστήριζε υποκαταλόγους, πεζούς χαρακτήρες ή ονόματα αρχείων μεγαλύτερα από τη μορφή 8.3” — περιορισμός στον οποίο οφείλονται τα παλαιότερα ονόματα αρχείων συστήματος στα Windows 11.
Εκείνη την εποχή, αν ένας συμβολομεταφραστής (assembler) ρωτούσε πού να αποθηκεύσει την καταγραφή (listing) και αν εσείς θέλατε να εκτυπωθεί, πληκτρολογούσατε “PRN” σαν όνομα αρχείου. Πληκτρολογώντας NUL, η έξοδος απορριπτόταν, ενώ με το CON κατευθυνόταν στην οθόνη.
Δεδομένου ότι υπήρχε μόνο ένας κατάλογος στον δίσκο, δεν υπήρχε άλλος χώρος όπου θα μπορούσαν να λειτουργήσουν αυτά τα “ειδικά” ονόματα. Όταν αργότερα εισήχθησαν οι φάκελοι, ο Chen αναφέρει πως, αν τα ονόματα αυτά δεν λειτουργούσαν και μέσα σε αυτούς, δεν θα ήταν δυνατή η μετάβαση σε έναν φάκελο, η εκτέλεση του συμβολομεταφραστή και η χρήση του NUL για την απόρριψη της εξόδου. Έτσι, τα ονόματα αυτά απέκτησαν την ειδική τους ιδιότητα σε κάθε φάκελο.
Ωστόσο, έχουμε απομακρυνθεί πολύ από την εποχή του DOS. Γιατί, λοιπόν, τέτοιοι κανόνες εξακολουθούν να υπάρχουν το 2026;
“Επειδή όλοι βασίζονται ακόμα σε αυτούς”, γράφει ο Chen. Τα αρχεία δέσμης εντολών (batch files) αποκρύπτουν την έξοδο ανακατευθύνοντάς την στο >NUL, τα σενάρια εντολών (scripts) ελέγχουν την ύπαρξη ενός φακέλου μέσω της εντολής “if exist directoryname\nul”, ενώ παλαιότεροι οδηγοί συνιστούν τη δημιουργία αρχείων με την εντολή “copy CON”.
Είναι χαρακτηριστικό ότι, αν καταργηθεί αυτός ο κανόνας, κάθε σενάριο εντολών που πραγματοποιεί ανακατεύθυνση στο NUL θα άρχιζε να δημιουργεί πραγματικά αρχεία.
Στα Windows 11 26H2, αν προσπαθήσετε να ονομάσετε ένα νέο φάκελο σε CON, θα δείτε το μήνυμα: “Το καθορισμένο όνομα συσκευής δεν είναι έγκυρο”. Το ίδιο θα συμβεί και με τα PRN, AUX, NUL και COM1.
Ωστόσο, το NUL.txt θα δημιουργηθεί χωρίς κανένα πρόβλημα, όπως και το CON.txt, παρόλο που η τεκμηρίωση της Microsoft αναφέρει ακόμη ότι το NUL.txt ταυτίζεται με το NUL.
0 σχόλια
iGuRu.gr